如何解决数据被截断?

时间:2013-08-22 15:28:20

标签: sql csv insert truncated

我将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

问题是数据是否太大。

请帮助解决此问题。

1 个答案:

答案 0 :(得分:1)

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

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