0

我将 CSV 文件中的数据插入 MySql 数据库,尤其是一张表。

我使用 CSVRead,CSV 文件格式为:

ts,val

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

是数据太大的问题。

请帮助解决这个问题。

4

1 回答 1

1

添加 System.out.println(sql); 在mysql中执行结果。

如果数据太大,请增加列长度或获取列长度,然后使用子字符串减少数据。

于 2013-08-22T15:35:05.787 回答