想用LOAD DATA LOCAL INFILE慢慢导入mysql

时间:2015-06-03 15:20:46

标签: java mysql database innodb

我使用LOAD DATA LOCAL INFILE将数据从文本文件导入mysql。

如果我将所有数据一次性地输出到mysql master,我会在主服务器和从服务器之间产生相当多的多次复制漂移。其他更改master上数据的进程需要等待很长时间才能看到它们的更改被复制到slave。

我不介意,如果我的导入需要更长的时间。

如何减慢LOAD DATA LOCAL INFILE,意味着强制它提交并在导入文件的每1000行后等待几秒钟?

我正在使用mysql-connector-java 5.1.6

以下代码片段中的

data_files 是一个地图文件和相应的表名。

import java.sql.Connection;
import java.sql.Statement;
import javax.sql.DataSource;

....
for (Map.Entry<String, String> entry : data_files.entrySet()) {

                    String batchStmt = String
                            .format("LOAD DATA LOCAL INFILE \"%s\" IGNORE INTO TABLE %s IGNORE 1 LINES",
                                    entry.getValue(), entry.getKey());

                    stmt.addBatch(batchStmt);
                }
                stmt.executeBatch();
                connection.commit();

0 个答案:

没有答案