sql >> Databasteknik >  >> RDS >> Mysql

mysql load data lokala infile syntax problem med inställda fält

Hittade rätt syntax för att få det här att fungera:

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 )

Kom ihåg - detta görs med pythons mysqldb-modul.

VARNING

Det enda problemet med den här lösningen är att av någon anledning infogar min bulkinsert bara de första 217 raderna med data från min fil. Min totala filstorlek är 19KB så jag kan inte föreställa mig att den är för stor för mysql-buffertarna... så vad ger?

mer information

Dessutom har jag precis provat denna syntax direkt i msyql-server CLI och den fungerar för alla 255 poster. Så det är uppenbarligen något problem med python, python mysqldb-modulen eller mysql-anslutningen som mysqldb-modulen gör...

KLAR

Jag kom BARA ut av problemet, det hade ingenting att göra med kommandot load data local infile utan snarare metoden jag använde för att konvertera min ursprungliga .dbf-fil till .csv innan jag försökte importera .csv. Av någon anledning kördes mysql-importmetoden på .csv innan konverteringsmetoden .dbf till .csv avslutades -- vilket resulterade i att en partiell datamängd hittades i .csv-filen och importerades... ledsen att slösa bort allas tid!




  1. MySQL-förbättrande prestanda utan cache

  2. Varför förbättrar STRAIGHT_JOIN den här frågan så drastiskt, och vad betyder det när den skrivs efter nyckelordet SELECT?

  3. Unserialize genom fråga på databasnivå själv

  4. hur man importerar data från mysql-databas till datagridview