1

私はtxtパイプ区切りファイル(英語ではありません-以下に示すのはポーランド語ですが、他の言語も含まれます)、エンコードされたutf16、次のようなものがあります:

head1 | head2 | head3 | head4
brytyjskiwytwórca|zjakżebogatą|przedwojennąhistorią|zapowiedziałwypuszczenie
dziśznamy|jedyniepaletękolorów|obejmującąaż|jednąpozycję

私はそれをmysqlテーブルに入れるために多くの異なる方法を試しました:

  • phpを使用した行ごと

  • 想像できるあらゆる方法でコンソールを介してLOADDATAINFILEを使用します。例:

 
LOAD DATA INFILE'C:/ \ wamp / \ www / \ hmvc / \ prop_tst.txt' INTO TABLE hmvc.table CHARACTER SET'utf8' FIELDS TERMINATED BY'|' '\n'\gで終了する行

私はいつもどちらかを取得します:

  • 文字化けした(誤ってエンコードされた)エントリ

  • 何も入力されません(SQLはデフォルト値を書き込みます)

言及するだけです:私はutf8、utf16、latin2(東ヨーロッパのエンコーディング用)...そしてnadaにもテーブルを設定しました。

ところで:たとえばメモ帳でutf8にエンコードを変更すると、インポートできます-問題ありませんが、utf16(アジア)を必要とする文字がある場合、またはファイル入力を自動化したい場合はどうなりますか?

PHPiconvなどは仕事に向いていないようです。

私はアイデアが新鮮なので、助けや読書へのリンクなどをいただければ幸いです。

4

2 に答える 2

5

LOAD DATA INFILE構文で説明されているように:

 ノート

ucs2、、、utf16またはutf32文字セットを使用するデータファイルをロードすることはできません。

UTF-8は、UTF-16と同じUnicodeコードポイントの完全なセットを表すことができます。おそらく、そのエンコーディングのみを使用する(または、PHPのiconv()関数などを介して他の言語でインポートする前にファイルをトランスコードする)のが最も簡単でしょうか?

于 2012-09-16T14:46:13.640 に答える
2

UTF-16形式の.txtファイル(またはMicrosoftでは「 UNICODE 」テキストファイルと呼んでいます)をMySQLにインポートすることはできません。あなたはここでその声明について読むことができます。私が最善の選択肢を見つけたのは、TextPadをダウンロードしてテキストファイルを開き、[名前を付けて保存]をクリックして、[エンコードUTF-8 ]を選択していることを確認することです。次に、そのファイルをSQLテーブルに直接簡単にロードできます。10秒以内に約250万件のレコードをアップロードしました。

現在、LOAD DATA INFILEを使用して、これらの文字セットを使用するデータファイルをロードすることはできません。-MySQLドキュメント

于 2017-03-22T18:43:12.237 に答える