我写了下面的程序来实现这个目标:
try {
PreparedStatement statement = connection.prepareStatement(
"SELECT * FROM some_table some_timestamp<?)");
statement.setTimestamp(1, new java.sql.Timestamp(dt.getTime()));
ResultSet resultSet = statement.executeQuery();
CSVWriter csvWriter = new CSVWriter(new FileWriter(activeDirectory + "/archive_data" + timeStamp + ".csv"), ',');
csvWriter.writeAll(resultSet, true);
csvWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}
// delete from table
try {
PreparedStatement statement = connection.prepareStatement(
"DELETE FROM some_table some_timestamp<?)");
statement.setTimestamp(1, new java.sql.Timestamp(dt.getTime()));
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
dbUtil.close(connection);
以上程序只适用于平均情况,但我想知道如何改进这个程序:
在没有超载应用程序服务器的情况下顺利运行一百万条记录
考虑到在该程序运行时会有许多记录插入到同一个表中,我如何确保该程序存档,然后清除完全相同的记录。
更新:我正在使用openscv http://opencsv.sourceforge.net/
答案 0 :(得分:0)
我想提出几点建议:
这些步骤仅涉及java部分。您需要在数据库方面拥有良好的设计。不容易,对吧?但这是使用大数据的代价。