MySQL使用Java从文件插入大型数据集

Der*_*gan 6 java mysql

我需要从CSV文件中将大约180万行插入到MySQL数据库中.(只有一张桌子)

目前使用Java来解析文件并插入每一行.

你可以想象这需要花费几个小时才能运行.(10)

我之所以没有将它直接从文件传输到数据库中,是因为数据必须在将数据添加到数据库之前进行操作.

这个过程需要由那里的IT经理来运行.所以我把它设置为一个很好的批处理文件,让它们在将新的csv文件放到正确的位置后运行.所以,我需要通过将文件放到某个位置并运行批处理文件来很好地完成这项工作.(Windows环境)

我的问题是,插入这么多数据的最快方法是什么?大型插入,来自临时解析文件或一次插入一次?可能还有其他想法吗?

第二个问题是,如何优化我的MySQL安装以允许非常快速的插入.(还有一点需要大量选择所有数据)

注意:该表最终将被删除,整个过程将在以后再次运行.

一些澄清:目前使用... opencsv.CSVReader解析文件,然后在每一行上插入.我正在总结一些专栏而忽略其他专栏.

更多说明:本地DB MyISAM表

Vin*_*vic 14

快速插入提示:

  • 使用LOAD DATA INFILE语法让MySQL解析并插入它,即使你必须修改它并在操作后提供它.
  • 使用此插入语法:

    插入表(col1,col2)值(val1,val2),(val3,val4),...

  • 在插入之前删除所有键/索引.

  • 在你所拥有的最快的机器中完成它(主要是IO,但RAM和CPU也很重要).数据库服务器,还有插入客户端,记住你将支付两倍的IO价格(一次读取,第二次插入)

  • 真棒!当插入400,000行时,选项2(插入语法)让我从77分钟缩短到26秒. (3认同)