使用JDBC在MySQL DB中加载数据的最佳方法

时间:2014-04-22 23:44:20

标签: java mysql sql jdbc

这里是一个更大的数据文件的示例数据集,我需要加载到mysql db中。问题是数据集太大而无法手动添加/附加插入语句并将逗号放在正确的位置。

E 1 T 2006-11-02 22:01:34 U 6 andrevan N 70 node_ue V 1 62 2004-09-11 05:50:00 node V 1 27 2004-09-11 06:13:00 slowking V 1 11 2004-09-11 06:50:00 merovingian V 1 34 2004-09-11 12:11:00 norm V 1 10 2004-09-11 13:30:00 anárion V 1 55 2004-09-11 15:20:00 thecustomoflife V 1 28 2004-09-11 15:21:00 neutrality V 1 8 2004-09-11 16:56:00 lst27 V 1 63 2004-09-11 18:00:00 zchangu V 1 5 2004-09-11 19:51:00 orthogonal V 1 26 2004-09-12 03:04:00 grunt V -1 25 2004-09-12 03:46:00 blankfaze V 1 56 2004-09-12 22:00:00 guanaco V 1 64 2004-09-12 22:51:00 beau99 V 1 19 2004-09-13 00:51:00 ffirehorse V 1 20 2004-09-13 01:27:00 michael V 1 7 2004-09-14 19:49:00 texture V 1 65 2004-09-16 05:01:00 friedmilk V 1 66 2004-09-17 13:56:00 ezhiki V 1 39 2004-09-18 07:34:00 squash

有人可以建议使用JDBC将其加载到mysql数据库中的最佳方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

最好的方法是使用MySQL LOAD DATA INFILE(http://dev.mysql.com/doc/refman/5.6/en/load-data.html)。使用此方法,您可以告诉它使用制表符分隔格式并跳过前x行。

如果需要从Java运行它,可以用Java代码包装调用。例如,如何做到这一点,你可以看到Pentaho项目是如何做到的:https://github.com/pentaho/pentaho-kettle/blob/master/engine/src/org/pentaho/di/trans/steps/mysqlbulkloader/MySQLBulkLoader.java/或者这个简单的博客文章:http://jeffrick.com/2010/03/23/bulk-insert-into-a-mysql-database/

根据经验,这绝对不是JDBC的工作,因为它会导致太多的性能瓶颈。但是,如果出于任何原因需要使用JDBC,只需确保使用PreparedStatement并批量处理行。 Spring有一个非常好的实现,你可以利用。例如,在此用途:http://www.mkyong.com/spring/spring-jdbctemplate-batchupdate-example/。当然,您还需要确保流式传输文件并逐行读取,以避免内存不足。