Ustaliliśmy właściwą składnię, aby to działało:
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 )
Pamiętaj - odbywa się to za pomocą modułu mysqldb Pythona.
OSTRZEŻENIE
Jedynym problemem związanym z tym rozwiązaniem jest to, że z jakiegoś powodu moja wstawka zbiorcza wstawia tylko pierwsze 217 wierszy danych z mojego pliku. Mój całkowity rozmiar pliku to 19KB, więc nie wyobrażam sobie, że jest za duży dla buforów mysql... więc co daje?
więcej informacji
Ponadto, właśnie wypróbowałem tę składnię bezpośrednio w CLI serwera msyql i działa ona dla wszystkich 255 rekordów. Więc oczywiście jest jakiś problem z pythonem, modułem mysqldb Pythona lub połączeniem mysql, które tworzy moduł mysqldb...
GOTOWE
WŁAŚNIE zrozumiałem problem, nie miał on nic wspólnego z poleceniem ładowania danych w pliku lokalnym, ale raczej z metodą, której użyłem do przekonwertowania mojego oryginalnego pliku .dbf na .csv przed próbą zaimportowania pliku .csv. Z jakiegoś powodu metoda importu mysql działała na .csv przed zakończeniem konwersji .dbf do .csv - w wyniku czego w pliku .csv znaleziono i zaimportowano częściowy zestaw danych... przepraszam za marnowanie czasu!