将 260GB 的 csv 文件导入 MySQL

将 260GB 的 csv 文件导入 MySQL

我有一个非常大的 csv ~260GB,我想将其导入 MySQL。我在 MacOS 中使用以下 mysql 脚本

如果存在 tmp_catpath_5,则删除表;

创建表 tmp_catpath_5( a1 BIGINT(20),a2 BIGINT(20),a3 BIGINT(20),a4 BIGINT(20),a5 BIGINT(20), c1 BIGINT(20),c2 BIGINT(20),c3 BIGINT(20),c4 BIGINT(20),c5 BIGINT(20), INDEX (a5) );

将本地数据文件 '/Volumes/Time Machine Backups 1/tmp_catpath_5.csv' 加载到表 tmp_catpath_5 中,字段以 ',' 结尾,行以 '"' 结尾;

它适用于较小的文件,例如 150GB,但对于这种大小,数据库会在加载命令后立即消失

错误 1049 (42000):未知数据库

MySQL 大小有限制吗?还有其他原因吗?我使用 MAMP 应用程序(MacOS 的 LAMP)中的 MySQL,它与官方 MySQL 应用程序可能不同吗?

答案1

我不知道特定数据库引擎是否有限制,但我遇到过一些国防部管理员,他们管理着每天导入 10TB 的 MySQL 系统,他们没有遇到这种问题。

我建议不要使用宏,而是编写脚本来解析输入文件并从中创建插入语句,这些语句可以直接输入到 MySQL。这样,您就不必一次处理整个文件,而只需一次处理一行。我喜欢用 Perl 来做这样的事情。

您可能还想考虑使用截断,而不是每次都删除表并重新创建它。

答案2

虽然这并没有真正回答你的问题,但你是否考虑过将文件分割成更小的块?unix 实用程序“split”可以轻松处理这个问题。

您说的“崩溃”是指 MySQL 客户端还是服务器?是否显示任何错误?

相关内容