Java JDBC を使用して MySQL データベースに接続し、データをテーブルにロードしています。Load in data ステートメントは、GUI インターフェイスから実行すると正常に機能します (私は Navicat を使用しています)。しかし、同じステートメントをテキスト ファイルに配置してから、次のコードを使用して読み取ると、機能しません。
public String readFile(String path, Charset encoding) throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return encoding.decode(ByteBuffer.wrap(encoded)).toString();
}
String hcccontent = readFile("resources/loadinhcc.txt", StandardCharsets.UTF_8);
String[] loadinhcc = hcccontent.split(regex);
for(int i = 0; i < loadinhcc.length; i++){
Statement stmt = conn.createStatement();
stmt.execute(loadinhcc[i]);
}
Javaプログラムが解析したクエリを抽出し、それをnavicatにコピーし、すべてのデータをロードしたコードをステップ実行しても、これはうまく機能します。それを実行してプログラムを実行しようとすると、「行 1 にはすべての列のデータが含まれていません」というエラーが表示されます。
私はオンラインで検索しましたが、この問題を引き起こしている可能性のある最も近いものは、MySQL の厳格モードです。入力がテーブルで指定されているものよりも長い場合、MySQL はロードされません。または、すべての列のデータがない場合はロードされない可能性があります。しかし、クエリが Navicat で機能するため、これがこの問題を引き起こしているとは言えません。Strict モードを無効にする JDBC の設定はありますか? それとも、私が見逃しているものですか?