2017-05-26 1 views
2

Ich bin eine einfache CSV-Datei in eine MySQL-DB Laden der LOAD DATA INFILE-Funktion mit ...MySQL-Zeilen, abgesehen von der letzten Zeile, sind eingerückt und nicht durchsuchbar? (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; 

Die Abfrage arbeitet erfolgreich und bietet mir die folgende Tabelle ...

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

Als ich versucht habe, diese Datenbank dann zu suchen, ich bin die letzte Zeile zu suchen, nur in der Lage, die eingefügt wird, ist dies unabhängig von der Gesamtzeilenanzahl der Tabelle, es ist nur die letzte Zeile Ich kann suchen.

Zum Beispiel ..

SELECT * FROM students; 

Werke und produziert mir die obige Tabelle.

Allerdings, wenn ich die folgende ...

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

Nur der letzte Eintrag kommt, und wenn ich es tue

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

Die Tabelle nichts gibt, das schließt, wenn ich mit Suche LIKE '"%Year 4%"'

Ich nehme an, der Einzug in meinen Zeilen ist ein Hinweis darauf, was hier schief gehen könnte, aber alles in phpadmin sieht gut aus?

EDIT:

CSV-Datei wird wie folgt ..

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

Wenn Sie die CSV-Datei auf einem Windows-System generiert haben, müssen Sie möglicherweise LINES TERMINATED BY '\ r \ n' verwenden, andernfalls könnten Sie nachfolgende Zeilenumbrüche erhalten. – Danijel

+0

@Danijel Wer etwas so einfaches wusste, konnte so nervig sein! Danke für die Köpfe hoch – rawr105

Antwort

1

Wie Danijel wies darauf hin, wie die CSV-Datei auf einem Windows-System erzeugt worden war (in meinem Fall auf einem Mac, aber verwendet Microsoft Excel) musste ich für die Rücksendung der Wagen berücksichtigen.

Unix verwendet \ n

Mac verwendet nur einen Wagenrücklauf \ r

Windows verwendet \ r \ n

0

Ich habe versucht, die CSV-Datei mit den Daten, die von Ihnen zur Verfügung gestellten zu erstellen und zu importieren, dass Datei funktioniert gut.

Eine Änderung, die ich bemerkte, war, dass die CSV-Datei den column_name als 'Klassenname' enthält und die von Ihnen verwendete Abfrage den column_name 'class' verwendet. Beim Bearbeiten der Abfrage zu

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

Es funktioniert gut.

Bitte verwenden Sie die folgende Escape-Zeichen, und es sollte gut funktionieren,

ESCAPED BY '\'

LINES BEENDET BY '\ r \ n'

FIELDS BY BEENDET ''

PS: Ich importierte die CSV-Datei mit SQLyog mit "Fill Excel freundliche Optionen" und es hat gut funktioniert.

Verwandte Themen