2017-05-26 8 views
2

私が使用してLOAD DATA INFILEの機能を使用してMySQLのDBへの単純なCSVファイルをロードしています...最後の行を除いてMySQLの行はインデントされ、検索できません。 (LOAD DATA INFILEの)

LOAD DATA INFILE '../../htdocs/aspens/files/thefile.csv' 
       INTO TABLE students 
       FIELDS TERMINATED BY ',' 
       ENCLOSED BY '\"' 
       LINES TERMINATED BY '\n' 
       IGNORE 1 ROWS; 

クエリが正常に動作し、次の表を私に提供しています...

+----------------+---------+ 
| student_name | class | 
+----------------+---------+ 
|Charlotte Peto | Year 1 
|John Rogers | Year 2 
|Jake Holford | Year 3 
|Jessica Wright | Year 4 
| Jack Crane  | Year 4 | 
+----------------+---------+ 

私は、このデータベースを検索しようとしたら、私は挿入されている最後の行を検索することができるよ、これは関係なく、テーブルの総行数の、それが唯一の最後の行です私は検索することができます。例えば

..

SELECT * FROM students; 

作品と上記の私のテーブルを作成します。

しかし、私は、次の...

SELECT * FROM students WHERE class='Year 4"; 

をすれば、唯一の最後のエントリが立ち上がって、私は

SELECT * FROM students WHERE class='Year 3"; 

をすれば、テーブルが何も返さない私が使用して検索する場合、これは含まれてLIKE '"%Year 4%"'

ここで私の行のインデントがヒントになっていると仮定していますが、phpadminのすべてがうまくいきますか?

EDIT:次のように

CSVファイルが..です

Student Name,Class Name 
Charlotte Peto,Year 1 
John Rogers,Year 2 
Jake Holford,Year 3 
Jessica Wright,Year 4 
Jack Crane,Year 4 
+1

Windowsシステムでcsvファイルを生成した場合は、LINES TERMINATED BY '\ r \ n'を使用する必要があります。そうしないと、末尾の改行で終了する可能性があります。 – Danijel

+0

@Danijel誰かがとてもシンプルなことを知っていたので、迷惑になることがありました!ヘッドアップをありがとう – rawr105

答えて

1

csvファイルは、Windowsシステム上で(私の場合は、Mac上で生成されたが、使用されていたようDanijelは、指摘したようにMicrosoft Excel)キャリッジリターンを考慮する必要がありました。

は、Unixは

Macは

Windowsが使用するだけで、キャリッジリターン\ rを使用しています\ nを使用しています\ rを\ nは

0

私はあなたが提供していることのインポートデータを使用してCSVファイルを作成しようとしましたファイルは正常に動作します。

私が気づいた変更の1つは、CSVファイルには「クラス名」としてcolumn_nameが含まれていて、使用するクエリにはcolumn_nameの「クラス」が使用されていました。クエリの編集時に

SELECT * FROM `students` WHERE `Class Name`='Year 4’; 

正常に動作します。

次のエスケープ文字を使用し、それが正常に動作する必要があり、 '\'

BY TERMINATED LINES '\ rを\ n' のBY TERMINATED

FIELDS ''

BY ESCAPED

してください

PS:SQLyogを使用してCSVファイルを「Fill Excel friendly options」にインポートしました。うまくいきました。

関連する問題