我正在尝试阅读,拆分成有意义的变量,然后将4Gb文本文件的信息插入到数据库中。样本1.2Mb的读取(以及需要时打印)需要几百毫秒,但将信息插入数据库需要几秒钟(30+)。我使用两个数据库(该文件包含两种不同类型的记录)。我的代码看起来像这样:
try {
reader = new BufferedReader(new FileReader(filename));
openConnection();
ch = reader.read();
while (ch != -1) {
if ((char)ch == '1') {
sql = parseCliente();
st.executeUpdate(sql);
}
else if ((char)ch == '2') {
sql = parseRegistro();
st.executeUpdate(sql);
}
else if (ch == -1) break;
else {
ch = reader.read();
}
}
closeConnection();
}
catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
我的代码实际上有效,但我需要更快的方法,否则操作需要几天时间!
答案 0 :(得分:1)
我更改了策略并将处理后的数据加载到CSV文件中,然后使用LOAD DATA INFILE命令将其传输到DB。我的样本从37秒到不到1秒。