txt ファイルからデータを読み取り、それらを mysql のテーブルに格納するプログラムを作成しています。私のプログラムでは、必要なフィールドを含むテーブルを作成してから、「Load Data Infile」コマンドを使用してテーブルに値を挿入しています。
私が持っているファイルには、次のような浮動小数点数であるデータを含む列 (litres という名前) が含まれています。
0,234
12,234
3,004 等
テーブルを作成するときのプログラムの最初で、liters フィールドは FLOAT として記述されます。しかし、プログラムを実行すると、SQLException : Data truncated for column 'litres' at row 1.
テーブルを作成して値を挿入するコードは次のとおりです。
private static String getCreateTable1(Connection con, String tablename) {
try {
Class.forName("com.mysql.jdbc.Driver");
Statement stmt = con.createStatement();
String createtable = "CREATE TABLE " + tablename
+ " ( text VARCHAR(255), price INT , day VARCHAR(255), litres FLOAT )";
System.out.println("Create a new table in the database");
stmt.executeUpdate(createtable);
} catch (Exception e) {
System.out.println(((SQLException) e).getSQLState());
System.out.println(e.getMessage());
e.printStackTrace();
}
return null;
}
private static String importData(Connection con, File txtFile,
String tablename) {
try {
Statement stmt;
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String path = txtFile.getAbsolutePath();
String importingdata = "LOAD DATA INFILE '"
+ path.replace('\\', '/')
+ "' INTO TABLE " + tablename
+ " FIELDS TERMINATED BY '\t'";
System.out.println("fill the table");
stmt.executeUpdate(importingdata);
} catch (Exception e) {
System.out.println(((SQLException) e).getSQLState());
System.out.println(e.getMessage());
e.printStackTrace();
}
return null;
}
どうすれば修正できますか?誰でも私を助けることができますか?問題はコンマだと思いますか?どうすれば認識させることができますか?