Mysql
 sql >> Database >  >> RDS >> Mysql

mysql carica i dati relativi alla sintassi del file locale con i campi impostati

Ho capito la sintassi corretta per farlo funzionare:

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 )

Intendiamoci:questo viene fatto con il modulo mysqldb di Python.

AVVISO

L'unico problema con questa soluzione è che per qualche motivo il mio inserimento collettivo inserisce solo le prime 217 righe di dati dal mio file. La dimensione totale del mio file è di 19 KB, quindi non riesco a immaginare che sia troppo grande per i buffer MySQL... quindi cosa succede?

maggiori informazioni

Inoltre, ho appena provato questa sintassi direttamente all'interno della CLI msyql-server e funziona per tutti i 255 record. Quindi, ovviamente c'è qualche problema con python, il modulo python mysqldb o la connessione mysql che fa il modulo mysqldb...

FATTO

Ho SOLO capito il problema, non aveva nulla a che fare con il comando infile locale dei dati di caricamento, ma piuttosto il metodo che stavo usando per convertire il mio file .dbf originale nel .csv prima di tentare di importare il .csv. Per qualche motivo il metodo di importazione mysql era in esecuzione su .csv prima che il metodo di conversione da .dbf a .csv fosse terminato, con il risultato che un set di dati parziale veniva trovato nel file .csv e importato... mi dispiace per far perdere tempo a tutti!