標準のエンコーディングとサーバーエンコーディングをすべてutf8として設定しているMySQLデータベースがあります.jdbcを使用してデータベースにロードする必要がある複数のエンコーディングのcsvファイルがあります。受信ファイルはANSIIをコードである場合でも、LOAD DATA INFILEはcsvキャラクタセット読み込みの問題
java.sql.SQLException: Invalid utf8 character string: '1080'
私はcsvファイルのヘッダーに基づいて、テーブルtable_abc
を作成し、データベースに
LOAD DATA LOCAL INFILE 'XXX.csv' INTO TABLE table_abc CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES
をcsvファイルをロードするには、以下のクエリを使用していますが失敗しました
は、ここに私のDB定義である私が今何をすべき
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\
、
- アップロードする前にすべてのファイルをutf8に変換する必要がありますか?複数のエンコードされたファイルに対して複数のエンコードされたテーブルを用意する必要がありますか?はいの場合、Javaで受信ファイルのエンコードを検出するにはどうすればよいですか?私は、テーブルにロード中に非UTF8文字を逃しには問題がない
P.S、私の唯一の意思に関係なくエンコーディングのいずれかのエラーを与えることなく、DB内のファイルの成功でアップロードです。
おかげ
ファイルを読み取るコード、JDBCコード、およびデータベーステーブルの定義が表示されない場合、問題を理解することは困難です。 CSVファイル全体を単一のテキスト値としてアップロードしていますか?バイナリブロブ? – VGR
私は質問を編集しました、それを見てください。 :) – AngryLeo
ファイルのエンコーディングを変更するか、SQLの 'CHARACTER SET'部分を変更するのがベストプラクティスかどうか尋ねていますか? – VGR