यह काम करने के लिए उचित सिंटैक्स का पता लगाया:
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 )
ध्यान रहे--यह अजगर के mysqldb मॉड्यूल के साथ किया जाता है।
चेतावनी
इस समाधान के साथ एकमात्र समस्या यह है कि किसी कारण से मेरा बल्क इंसर्ट केवल मेरी फ़ाइल से डेटा की पहली 217 पंक्तियाँ सम्मिलित करता है। मेरी कुल फ़ाइल का आकार 19KB है इसलिए मैं कल्पना नहीं कर सकता कि यह mysql बफ़र्स के लिए बहुत बड़ा है... तो क्या देता है?
अधिक जानकारी
साथ ही, मैंने इस सिंटैक्स को सीधे msyql-server CLI के भीतर आज़माया और यह सभी 255 रिकॉर्ड्स के लिए काम करता है। तो, स्पष्ट रूप से यह अजगर, अजगर mysqldb मॉड्यूल, या mysql कनेक्शन के साथ कुछ समस्या है जो mysqldb मॉड्यूल बनाता है...
हो गया
मैंने बस समस्या का पता लगा लिया, इसका लोड डेटा लोकल इनफाइल कमांड से कोई लेना-देना नहीं था, बल्कि .csv आयात करने का प्रयास करने से पहले मैं अपनी मूल .dbf फ़ाइल को .csv में बदलने के लिए जिस विधि का उपयोग कर रहा था। किसी कारण से .dbf से .csv रूपांतरण विधि समाप्त होने से पहले .csv पर mysql आयात विधि चल रही थी - जिसके परिणामस्वरूप आंशिक डेटा सेट .csv फ़ाइल में पाया गया और आयात किया गया... सभी का समय बर्बाद करने के लिए क्षमा करें!पी>