2013-07-09 13 views
6

Ich lade eine CSV-Datei mit MySQL LOAD DATA INFILE aber nur die Hälfte der Zeilen laden. Ich habe verschiedene Dateien getestet und genau die Hälfte der Zeilen wird jedes Mal geladen. Wie kann ich alle Zeilen laden?MySQL laden Daten infile Laden genau die Hälfte der Datensätze

Hier ist das LOAD DATA INFILE SQL:

LOAD DATA INFILE 
    'C:\\Users\\user\\Dropbox\\wamp\\www\\jobdesc\\data\\banp\\pa_class_posn.csv' 
    INTO TABLE pa_class_posn_temp 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    (ID,POSN_CLASS_TITLE,SALARY_GRADE,POSN_CLASS_CODE, 
    RECRUITMENT_TIER,EXEMPT_NONEXEMPT,REVISED); 

Hier ist das Schema:

CREATE TABLE IF NOT EXISTS `pa_class_posn_temp` (
    `ID` int(4) NOT NULL, 
    `POSN_CLASS_TITLE` varchar(36) DEFAULT NULL, 
    `SALARY_GRADE` varchar(4) DEFAULT NULL, 
    `POSN_CLASS_CODE` varchar(5) NOT NULL, 
    `RECRUITMENT_TIER` varchar(6) DEFAULT NULL, 
    `EXEMPT_NONEXEMPT` varchar(10) DEFAULT NULL, 
    `REVISED` varchar(10) DEFAULT NULL, 
    PRIMARY KEY (`ID`), 
    UNIQUE KEY `POSN_CLASS_CODE` (`POSN_CLASS_CODE`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Hier ist eine sehr einfache (zweireihige) Datensatz, der in einer CSV-Datei gespeichert (nur 1 Zeile wird geladen):

6682,"A D,Stdnt Hlth&Cnslg Bsn Ops","15","A7078","Tier 1","Exempt","04/19/2013" 
    7698,"AVP,Alumni Relations","17","N8004","Tier 2","Exempt","04/19/2013" 

Es gibt CR/LF Zeilenenden auf jeder Zeile, aber Sie können sie hier nicht sehen. Außerdem gibt es im vollständigen Datensatz keine doppelte ID (Primärschlüssel) und MySQL erzeugt keine Warnungen oder Fehler.

Ich verwende WAMP unter Windows 7. Außerdem kann ich das LOCAL-Schlüsselwort nicht verwenden, weil das auf dem Produktionsserver nicht funktionieren wird, auf dem dieser Code schließlich leben wird.

Jede Hilfe oder Vorschläge wird sehr geschätzt.

Antwort

7

Haben Sie Ihre csv-Datei auch unter Windows erstellt? Wenn ja, müssen Sie möglicherweise verwenden LINES TERMINATED BY '\r\n'

+3

'LINES TERMINATED VON '\ r \ n'' hat den Trick gemacht. Ich habe die \ r vermisst. ** Danke! ** – Grasshopper

+1

Ich kann nicht glauben, dass es so einfach war. Hat funktioniert! – openwonk