Java CSV转换成MySQL数据库
我有以下片段:Java CSV转换成MySQL数据库,java,mysql,Java,Mysql,我有以下片段: String insertSql = "LOAD DATA INFILE 'C:/thomsonReuters/compressed/premium-world-check-day.csv'" + " INTO TABLE thomsenreuters.worldcheck " + " FIELDS TERMINATED BY '\t' " + "
String insertSql = "LOAD DATA INFILE 'C:/thomsonReuters/compressed/premium-world-check-day.csv'"
+ " INTO TABLE thomsenreuters.worldcheck "
+ " FIELDS TERMINATED BY '\t' "
+ " ENCLOSED BY '\"' "
+ " LINES TERMINATED BY '\r\n' "
+ " IGNORE 1 ROWS;";
此文件共有4567行。字段以制表符结尾,并用双引号括起来。我尝试通过准备好的更新stmt插入csv文件。但是Java只将前4行插入MySQL。我犯了什么错
谢谢你的帮助
编辑
完整类别代码:
提供前5行数据当您在mysql命令行上执行相同的查询时,它是否工作?如果没有,,然后我认为您的CSV文件中有一些无效字符。为了改进程序错误报告,如果引发任何异常,您应该打印整个SQLException链,以及连接中的SQLWarning完整列表。如果我在mysql中执行相同的查询,则会得到错误代码:1261第4行不包含所有列的数据。那么我必须改变什么呢?每一行都有一个条目,但不是所有列都有。我知道了。错误是我必须将由“\”括起的内容更改为由“”括起的内容。
Connection con = null;
PreparedStatement stmt = null;
String truncateTable = "Truncate table thomsenreuters.worldcheck;";
String insertSql = "LOAD DATA INFILE 'C:/thomsonReuters/compressed/premium-world-check-day.csv'"
+ " INTO TABLE thomsenreuters.worldcheck "
+ " FIELDS TERMINATED BY '\t' "
+ " ENCLOSED BY '\"' "
+ " LINES TERMINATED BY '\r\n' "
+ " IGNORE 1 ROWS;";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("Driver was found");
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/thomsenreuters","XXXXXXX","XXXXXXX");
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Connection to Database");
System.out.println("Start insert...");
try {
con.setAutoCommit(false);
stmt = con.prepareStatement(truncateTable);
stmt = con.prepareStatement(insertSql);
int total = stmt.executeUpdate();
con.commit();
con.setAutoCommit(true);
System.out.println("Total Rows insert " + total);
} catch (SQLException e) {
e.printStackTrace();
}
finally{
if(stmt != null)
{
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null)
{
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}