您可能甚至不需要导入它。您可以使用 engine=CSV 创建一个表。
mysql> 创建表 mycsv(id int not null) engine=csv;
查询正常,0 行受影响(0.02 秒)
然后进入您的数据目录并删除 mycsv.CSV 并将您的 CSV 文件移动/复制/符号链接为 mycsv.CSV。返回 mysql 并输入flush tables;,一切顺利。(注意:它可能无法使用,\r\n因此您可能需要\n先将它们转换为)。
如果您使用 InnoDB,问题是它必须跟踪插入的每一行的每个撤消日志条目,这需要大量资源,需要很长时间。最好以较小的批次进行,这样它就可以在内存中进行大部分撤消日志跟踪。撤消日志在那里,以防您在加载过程中按 ctrl-c 它需要回滚。加载该批次后,它不再需要跟踪它。如果您一次完成所有操作,那么它必须跟踪所有这些撤消日志条目,可能必须进入磁盘——这是一个杀手。
如果我知道我不打算进行行级锁定,我更喜欢将 myisam 用于数据,例如如果我想运行一个长程序来分析数据。该表已锁定,但我只需要在其上运行一个程序。另外,您始终可以使用合并表——它们采用 myisam 表,您可以将它们组合到一个表中。我喜欢对每个表都是一个月数据的日志文件执行此操作。然后我有一个合并表一年。合并表不复制数据,它只是指向每个 myisam 表。