我正在尝试以.csv格式编写整个sql表。该表长6500行,但文件中只写600行左右。每次运行方法时,写入的行数都会有所不同
Connection con = Panel.getConnection();
String query = "SELECT * from group3.merged_person";
PreparedStatement statement = con.prepareStatement(query);
ResultSet srs = statement.executeQuery();
int totalColumns = srs.getMetaData().getColumnCount();
FileWriter writer = new FileWriter("merged_person.csv");
for(int i = 1; i <= totalColumns; i++) {
writer.write(srs.getMetaData().getColumnLabel(i) + ",");
}
writer.write("\n");
int lines = 0;
while(srs.next()) {
lines++;
for(int j = 1; j <= totalColumns; j++) {
writer.write(srs.getString(j) + ",");
}
writer.write("\n");
}
System.out.println("lines written " + lines);
writer.close();
答案 0 :(得分:1)
您可以考虑添加:
writer.flush();
之前的
writer.close();
这应该强制将任何缓冲的内容写入目标文件。
答案 1 :(得分:0)
我不认为问题出在这部分代码中。听起来几乎就像你的连接过早死亡一样。由于您未在此方法中关闭它,请在此方法的最后检查srs.isClosed()
和con.isClosed()
,看看它们是否在其他地方关闭。
答案 2 :(得分:0)
从group3.merged_person开始执行SELECT计数(*),以确保将读取多少行。也许其他人正在修改那张桌子。