0

CSV ファイルのデータを MySql データベース、特に 1 つのテーブルに挿入します。

私は CSVRead を使用しており、CSV ファイル形式は次のとおりです。

ts、値

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 ファイルを読み取り、データを 1 行ずつ挿入します。最後に、リーダーと接続を閉じました。

コンソールの出力は次のとおりです。

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