2013-08-22 29 views
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 

是問題的數據是太大。

請幫忙解決這個問題。

回答

1

Add System.out.println(sql);在mysql中執行結果。

如果數據太大,增加列長度或獲取列長度,則使用子字符串減少數據。

+0

謝謝您的建議。有用! – Eric