Habe die richtige Syntax herausgefunden, damit das funktioniert:
sql = """LOAD DATA LOCAL INFILE %s INTO TABLE seriallog_dev
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'
IGNORE 1 LINES
(FLEX_PN, FLEX_PLANT, FLEX_ORDID, FLEX_REV, CUST_PN, CUST_REV, SERIALID, @DTE, @LTME)
SET RECORDID = NULL,
TRANS_OCR = STR_TO_DATE(CONCAT(@DTE,'',@LTME), "%%Y%%m%%d%%H%%i%%s"),
CREATED = CURRENT_TIMESTAMP;"""
params = (file,)
self.db.query( sql, params )
Wohlgemerkt – dies geschieht mit dem mysqldb-Modul von Python.
ACHTUNG
Das einzige Problem bei dieser Lösung ist, dass meine Masseneinfügung aus irgendeinem Grund nur die ersten 217 Datenzeilen aus meiner Datei einfügt. Meine Gesamtdateigröße beträgt 19 KB, also kann ich mir nicht vorstellen, dass sie zu groß für die MySQL-Puffer ist ... was gibt es also?
weitere Informationen
Außerdem habe ich diese Syntax gerade direkt in der msyql-server-CLI ausprobiert und sie funktioniert für alle 255 Datensätze. Offensichtlich handelt es sich also um ein Problem mit Python, dem python mysqldb-Modul oder der mysql-Verbindung, die das mysqldb-Modul herstellt ...
FERTIG
Ich habe das Problem GERADE herausgefunden, es hatte nichts mit dem lokalen Infile-Befehl zum Laden von Daten zu tun, sondern mit der Methode, mit der ich meine ursprüngliche .dbf-Datei in die .csv-Datei konvertierte, bevor ich versuchte, die .csv-Datei zu importieren. Aus irgendeinem Grund lief die mysql-Importmethode auf der .csv-Datei, bevor die .dbf-zu-.csv-Konvertierungsmethode abgeschlossen war – was dazu führte, dass ein Teildatensatz in der .csv-Datei gefunden und importiert wurde … Entschuldigung, dass wir die Zeit aller verschwenden! P>