'Mysqlimport' उपयोगिता से कोई सूची कैसे चेताती है?


28

शुरू करने के लिए, यह MySQL के भीतर से डेटा लोड करने के बारे में नहीं है, बल्कि कमांड-लाइन टूल "mysqlimport" का उपयोग कर रहा है।

मैं इसका उपयोग सीएसवी को सीधे एक टेबल में लोड करने के लिए कर रहा हूं और इसे उत्पन्न होने वाली चेतावनियों को देखने की जरूरत है। मैं क्रिया के साथ प्रदर्शित करने के लिए चेतावनियाँ प्राप्त नहीं कर सकता और न ही डिबगिंग चालू हुआ। कोई विचार?

(MySQL 5.0.5)

जवाबों:


31

यह mysqlimport के साथ संभव नहीं है, हालांकि एक विकल्प के रूप में आप निम्नलिखित कार्य कर सकते हैं:

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

listOfColumnNamesकॉलम की एक उपयुक्त अलग सूची के साथ बदलें ।

जादू है (जैसा कि एडुआर्ड ने पहले उल्लेख किया है) LOAD DATA INFILE और SHOW WARNINGS को एक ही सत्र में एक साथ निष्पादित करना है, क्योंकि mysqlimport सीधे चेतावनियों को प्राप्त करने का एक तरीका प्रदान नहीं करता है।


मीठा, धन्यवाद! मैंने एडुआर्ड की टिप्पणी को देखने के बाद इस तरह से एक बयान लिखना शुरू कर दिया था। धन्यवाद यो! धन्यवाद
ब्रिंक

क्या यह काम करता है अगर tables.csvएक स्थानीय फ़ाइल है (यानी, डेटाबेस के सर्वर पर नहीं)?
रफी खाचदौरेन

मेरे लिए निम्नलिखित कार्य पहले तालिका बनाते हैं फिर mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db संबंधित stackoverflow.com/questions/14127529/…
barlop

और UTF8 के बारे में जैसे जोड़ सकते हैं mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;के रूप में उल्लेख stackoverflow.com/questions/4957900/...
barlop

एक समस्या यह है कि बाहर निकलने का कोड हमेशा होता है, 0इसलिए मुझे लगता है कि आपको यह जांचने के लिए कमांड आउटपुट को पार्स करना होगा कि क्या आयात सफल हुआ है जब ऊपर स्क्रिप्टेड (?)
pamamol

5

अन्य लोगों की तरह वास्तविक समस्या यह है कि SHOW WARNINGS काम करने के लिए आपको उसी कनेक्टेड सत्र में होना चाहिए। mysqlimport आयात से समाप्त हो जाता है जैसे ही यह आयात करना समाप्त कर देता है, यह वर्तमान संस्करण में असंभव की चेतावनियों को पकड़ना असंभव बना देता है। एक पैच दान करने के अवसर की तरह लगता है। :)


1

मुझे mysqlimport के साथ चेतावनी प्रिंट करने का कोई तरीका नहीं मिला है। लेकिन चूंकि mysqlimport में "LOAD DATA INFILE" के अलावा कुछ भी नहीं है, इसलिए आप "SHOW WARNINGS" द्वारा डेटा आयात करने के लिए mysql कमांड का उपयोग क्यों नहीं करते हैं?


धन्यवाद! इरिटेटिंग माइस्क्लीमपोर्ट की तरह यह वास्तव में अच्छा नहीं खेलता: /
ब्रिंक

"SHOW WARNINGS;" का उपयोग करें "लोड" के बाद कमांड।
एडुआर्ड विरच 15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.