sql >> Database >  >> RDS >> Mysql

mysql laadgegevens lokale infile syntaxisproblemen met ingestelde velden

De juiste syntaxis bedacht om dit te laten werken:

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 )

Let wel:dit wordt gedaan met de mysqldb-module van python.

WAARSCHUWING

Het enige probleem met deze oplossing is dat om de een of andere reden mijn bulkinsert alleen de eerste 217 rijen met gegevens uit mijn bestand invoegt. Mijn totale bestandsgrootte is 19 KB, dus ik kan me niet voorstellen dat het te groot is voor de mysql-buffers... dus wat geeft het?

meer info

Ook heb ik deze syntaxis zojuist rechtstreeks in de msyql-server CLI geprobeerd en het werkt voor alle 255 records. Het is dus duidelijk een probleem met python, de python mysqldb-module, of de mysql-verbinding die de mysqldb-module maakt...

GEREED

Ik heb het probleem NET ontdekt, het had niets te maken met de opdracht load data local infile, maar eerder met de methode die ik gebruikte om mijn originele .dbf-bestand naar het .csv-bestand te converteren voordat ik probeerde het .csv-bestand te importeren. Om de een of andere reden werd de mysql-importmethode uitgevoerd op de .csv voordat de conversiemethode van .dbf naar .csv was voltooid -- resulterend in een gedeeltelijke dataset die in het .csv-bestand werd gevonden en geïmporteerd... sorry voor het verspillen van ieders tijd!




  1. mysql_fetch_array en alleen string array-sleutels

  2. Proactief verzamelen van informatie over fragmentatie van SQL Server-indexen

  3. MySQL -- Joins tussen databases op verschillende servers met Python?

  4. Mysql Codeigniter Active Record - Hoe voer ik een where_in-query uit en retourneer ik de juiste volgorde van resultaten?