将 260GB 的 csv 文件导入 MySQL

jim*_*ont 7 mysql files csv large-data

我有一个非常大的 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) );

将数据本地 infile '/Volumes/Time Machine Backups 1/tmp_catpath_5.csv' 加载到表 tmp_catpath_5 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ;

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

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

MySQL 有大小限制吗?是别的吗?我使用 MAMP 应用程序中的 MySQL(MacOS 的 LAMP),它会与官方 MySQL 应用程序不同吗?

Joh*_*ers 5

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

与其使用宏,我建议编写一个脚本来解析输入文件并从中创建插入语句,这些语句可以直接提供给 MySQL。这样你就不会一次处理整个文件,一次只处理一行。我喜欢用 Perl 做这些事情。

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