JDBC ドライバーを使用して mysql データベースに接続し、Java アプリケーションで「LOAD DATA INFILE」コマンドを使用してテキスト ファイルをデータベースにロード (挿入) しています。次のエラーが表示されます: Data truncation: Data too long for column xxx at row 1 .
ただし、データベースにログインして SQL を手動で入力して同じテキスト ファイルを手動でロードすると、データは正常にロードされます。
誰かがエラーの原因を教えてもらえますか?
これを Red Hat Enterprise Linux Server リリース 5.8 で実行しています。jdk のバージョンは 1.5.0_16 です。
これは、データをロードするために使用される関数です
public static void loaddata(Connection conn, String filename, String tablename)
{
try{
Statement stmt = null;
stmt = conn.createStatement();
File file = new File(filename);
file.getAbsolutePath().replace("\\", "\\\\");
String cmd = "LOAD DATA INFILE '"
+ file.getAbsolutePath().replace("\\", "\\\\")
+ "' INTO TABLE " + tablename + " FIELDS TERMINATED BY \'^\'";
stmt.executeUpdate(cmd);
System.out.println("cmd :" + cmd);
}
catch(SQLException sqle){
sqle.printStackTrace();
}
}
これは、JDBC 接続を作成する関数です。
public static Connection createConnection()
{
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch(Exception e) {
e.printStackTrace();
}
try {
String url = ""; //URL mentioned in the actual code
conn = DriverManager.getConnection(url, user, pass);
} catch (SQLException sqe1) {
sqe1.printStackTrace();
}
return conn;
}