2

load data local infileを使用してcsvファイルをmysqlデータベースにインポートしようとしています

私のcsvファイルは次のようになります:

1;Lubos;Chrapna;92;muz;Topolcany
2;Branislav;Grecni;28;muz;Topolcianky
3;David;Forgac;57;muz;Hronsky Benadik
4;Imrich;Doci;58;muz;Kosice

この cvs ファイルを配置したいテーブルは次のようになります。

   CREATE TABLE IF NOT EXISTS DIM_zakaznik (
   id int(5),
   meno varchar(15),
   priezvisko varchar(15),
   vek int(15),
   pohlavie varchar(15),
   bydlisko varchar(15))

私のクエリは次のようになります。

    load data local infile 'dim_zakaznik.csv' into table DIM_zakaznik 
    fields terminated by ';'
    enclosed by '\n'
    lines terminated by '\n';

それは問題なく動作し、phpMyAdmin でそのテーブルを見るとすべて問題ないように見えますが、select を実行しようとすると、最後の列 (「bydlisko」と呼ばれる) が無視されるという問題があります。

たとえば、私はこれを試します:

 SELECT * FROM `dim_zakaznik` WHERE `bydlisko`='Topolcany'

「MySQL は空の結果セットを返しました (つまり、行がありません)。(クエリに 0.0184 秒かかりました)」

空の結果であってはなりませんよね?その最後の列だけでは機能していません。その理由はわかりません。以前にそれらの列で試してみたときに、別の列を追加しました (その列はテーブルの最後でした)。他の列は無視されました (テーブルの最後の列でした)。

助けていただければ幸いです。前もって感謝します!

4

2 に答える 2

0

CSVのフィールドは「\n」で区切られていないため、クエリで「「\n」で囲まれた」セクションを使用しないでください。そのセクションを削除してから、クエリを再実行してください。

また、備考として、列データを切り捨てないようにしてください。最後の列は 15 文字です。15文字の単語で十分ですか?(Varchar は長さにもう 1 バイトかかるため、値 "Hronsky Benadik" には必然的に 16 になります)。

于 2013-01-23T20:56:41.480 に答える