2016-12-07 5 views
-1

PhpmyAdmin経由でデータベースにtxtファイルからデータをインポートしようとしました。 私は以下のクエリを使用します。インポートは機能しますが、クエリは各文字の後に置換記号を追加します(例: "Input1"という文字列は " I n p u t 1"という文字列でアップロードされています。txtからのMySQLのインポート - 文字セット

問題は、私はtxtファイルの文字セットを知らないということです。試したUTF8mb4/16/32、UCS2、ascii、big5 - 成功しません。 txtを手動でUTF-8またはCSV形式で保存すると、アップロードはうまく動作します。私はこれをCronjobと自動処理するためにリンクするつもりなので、手動による調整は解決策ではありません。ここで

は私のコードです:

は1 TEST_2。DELETE FROM。 LOAD DATA INFILE '/share/.../Import SQL/A01.txt' テーブルTEST_2に置換 文字セットUTF8 フィールド終了 ';' IGNORE 1 LINES

お読みいただきありがとうございます。

+1

MicrosoftのフォーマットやUCS2のようなにおいがします。 ucs2を試してから、どのようにしたのか詳細をお知らせください。 _client_の文字セットは重要なものであり、テーブル/カラムの文字セットではありません。特に、utf8の代わりに 'ucs2'を使って' LOAD'を試してみてください。 –

+0

IはUCS2のインポートのために以下のコードを試みた: '/share/.../Import SQL/A01.txt' BY TERMINATED表TEST_2 文字セットUCS2 フィールドにREPLACE LOADデータINFILEを ';' IGNORE 1 LINES UTF8ステートメント以外では、エラーメッセージなしで何もインポートしません(空のテーブル)。 – ElRoodie

答えて

0

ソースは、文字セットのUCS2であると思われるので:;の変換

LOAD DATA INFILE '/share/.../Import SQL/A01.txt' -- ok as is 
    REPLACE INTO TABLE TEST_2 
    CHARACTER SET ucs2       -- note 
    FIELDS TERMINATED BY CONVERT(';' USING ucs2) -- note 
    IGNORE 1 LINES; 

は、それは、あまりにも、UCS2エンコードされていることを前提にしています。

0

あなたのサポートのおかげで、残念ながら上記のどれも私のために働いていませんでした。

アップロードクエリを実行する前に、自動的にtxtファイルをutf8に変換することで、これを別の方法で解決しました。もう一つの追加のステップは残念ですが、SQL内の 'CHARACTER SET'が有効な解決策を提供していなかったため、私が把握した唯一の解決策でした。

Cronjobは、変換されたファイルからmySQLi経由でデータをアップロードしています。

関連する問題