我有一个相当大的数据集,我需要导入到MySQL。 我希望尽可能有效地做到这一点,因为我需要反复这样做。 有没有这个技巧? 有什么比扩展INSERT语句更高效的方法吗?
为了解决评论中的问题,原始格式使用XML格式,不过我已经有一个转换器将其转换为CSV格式。 我正在使用MySQL 5.1.x,目标数据库是InnoDB。 数据之间有关系,但我没有任何约束,数据在大多数情况下不够干净。
试试mysqlimport,你可以直接从CSV文件中导入。
我会阅读MySQL手册,我正在考虑INSERT后,但LOAD DATA INFILE看起来有趣的“20倍更快”….
有一个名为Pentaho Data Integration的开源ETL工具,它具有一个mysql批量加载选项(在Design视图的实验文件夹下)。 您还可以使用CSVinput和表格输出步骤以平台不可知的方式快速加载数据。 如果您在载入数据之前需要对数据进行任何处理,则可以在该程序中编码该逻辑。
使用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */; 和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */; 围绕每个表的INSERT语句。
这将确保在所有行存在之后创build非唯一索引,而不是尝试逐个构build它们。
即使是大块的“插入”也不应该花太长的时间。 我用了一个新的200MB的JIRA数据库导出,并在大约30秒内加载到一个处女数据库中。