我有一个非常大的 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 客户端还是服务器?是否显示任何错误?