0

I insert the data from CSV file into MySql database, especially into one table.

I use CSVRead, and the CSV file format is :

ts,val

2013-03-31T23:45:00-04:00 New_York,10

And the table is hisdata(ts, val).

Here is my code:

     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());
        }

I think probably, the import data is too large. When I did size(), size is 8835. Basically, I set connector. Then read CSV file and insert data line by line. Finally, I closed reader and connection.

Here is the Console print out:

Sql Connection starts
Driver loaded
Database connected
Start: size is 8835
insert is failure Data truncated for column 'val' at row 1

Is the problem the data is too large.

Please give help to solve this problem.

Community
  • 1
  • 1
Eric
  • 1,271
  • 4
  • 14
  • 21

1 Answers1

1

Add System.out.println(sql); execute the result in mysql.

if data is too large, increase column length, or get column length then reduce your data with substring.

Madagaga
  • 869
  • 9
  • 11