我将CSV文件中的数据插入到MySql数据库中,特别是在一个表中。
我使用CSVRead,CSV文件格式是:
特斯瓦尔 2013-03-31T23:45:00-04:00 New_York,10
桌子是hisdata(ts, val)。
这是我的代码:
try{
try {
CSVReader reader = new CSVReader(new FileReader(csvFile));
List<String[]> csvList;
csvList = reader.readAll();
System.out.println("Start: size is " + csvList.size());
for(int i = 0; i<csvList.size(); i++){
String[] eachStr = csvList.get(i);
int j = 0;
//insert(ts, val) into hisdata of sql
String sql = "INSERT INTO hisdata" + "(ts, val)" + " VALUES"
+ "('" + eachStr[j] + "', '" + eachStr[j+1] + "')";
Statement st = (Statement) conn.createStatement();
count = st.executeUpdate(sql);
}
System.out.println("access table is inserted: " + count
+ " records");
reader.close();
} catch(IOException e){
System.out.println("Error: " + e.getMessage());
}
conn.close();
} catch (SQLException e) {
System.out.println("insert is failure " + e.getMessage());
}我想,进口数据可能太大了。当我做size()时,尺码是8835。基本上,我设置了连接器。然后读取CSV文件并逐行插入数据。最后,我关闭了阅读器和连接。
下面是控制台打印出来的内容:
Sql Connection starts
Driver loaded
Database connected
Start: size is 8835
insert is failure Data truncated for column 'val' at row 1问题是数据太大了。
请帮忙解决这个问题。
发布于 2013-08-22 15:35:05
添加System.out.println(sql);在mysql中执行结果。
如果数据太大,请增加列长度,或获取列长度,然后使用子字符串减少数据。
https://stackoverflow.com/questions/18384784
复制相似问题