我试图导入我的数据库的数据到txt文件,之后我想再次导出它从这个文本文件,我写了这段代码private void importdata() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone = UTC", "root", "");
} catch (Exception ex) {
Tools.msg(ex.getMessage());
}
String csvFilePath = "D://t1.txt";
try {
String sql = "select ID,address,name from t1";
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
FileOutputStream file = new FileOutputStream(csvFilePath);
OutputStreamWriter fileWriter = new OutputStreamWriter(file, StandardCharsets.UTF_8);
fileWriter.write("ID,Name,address");
while (rs.next()) {
int ID = rs.getInt("id");
String Name = rs.getString("name");
String address = rs.getString("address");
String line;
line = String.format("%s,%s,%s",
ID,address,Name);
fileWriter.write("\n");
fileWriter.write(line);
}
stmt.close();
fileWriter.close();
} catch (SQLException | IOException ex) {
Logger.getLogger(importandexport.class.getName()).log(Level.SEVERE, null, ex);
}
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true characterEncoding=UTF-8&serverTimezone = UTC", "root", "");
String sql = "delete from t1";
stmt = con.createStatement();
stmt.executeUpdate(sql);
stmt.close();
} catch (Exception ex) {
Tools.msg(ex.getMessage());
}
}
private void export() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone = UTC", "root", "");
} catch (Exception ex) {
Tools.msg(ex.getMessage());
}
String sql = "LOAD DATA INFILE 'D://t1.txt' \n"
+ "INTO TABLE t1 \n"
+ "FIELDS TERMINATED BY ',' \n"
+ "LINES TERMINATED BY '\\n'\n"
+ " IGNORE 1 ROWS";
try {
stmt = con.createStatement();
stmt.executeUpdate(sql);
stmt.close();
} catch (Exception ex) {
Tools.msg(ex.getMessage());
}
}
这段代码对我来说很好,但是现在我想选择(ID,name,address)和加载(ID,name,address)而不是(ID,address,name),但是我做不到,那么我怎么做呢?