सबसे पहले, मैं आपको एक . का उत्तर दे सकता हूं तालिका:
इन सभी के साथ परेशानी INTO OUTFILE
या --tab=tmpfile
(और -T/path/to/directory
) उत्तर यह है कि इसे चलाने की आवश्यकता है mysqldump उसी सर्वर पर MySQL सर्वर के रूप में, और उन एक्सेस अधिकारों के साथ।
मेरा समाधान बस mysql
. का उपयोग करना था (नहीं mysqldump
) -B
. के साथ पैरामीटर, SELECT स्टेटमेंट को -e
. के साथ इनलाइन करें , फिर ASCII आउटपुट को sed
. से मसाज करें , और हेडर फ़ील्ड पंक्ति सहित CSV के साथ समाप्त करें:
उदाहरण:
mysql -B -u username -p password database -h dbhost -e "SELECT * FROM accounts;" \
| sed "s/\"/\"\"/g;s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g"
<ब्लॉकक्वॉट> "आईडी", "लॉगिन", "पासवर्ड", "फ़ोल्डर", "ईमेल" "8", "मारियाना", "xxxxxxxxxx", "मारियाना", "" "3", "स्क्वायरडिज़ाइन", "xxxxxxxxxxxxxxxxx", " Squaredesign","[email protected] ""4",,"miedziak",,"xxxxxxxxxx",,"miedziak","example@sqldat .com ""5", "सरको", "xxxxxxxxx", "सरको", "" "6", "लॉजिट्रांसपोलैंड", "xxxxxxxxxxxxxx", "लॉजिट्रांसपोलैंड", "" 7 "," अमोस "," xxxxxxxxxxxxxxxxxx "," अमोस", "" "9", "एनाबेले", "xxxxxxxxxxxxxxxx", "एनाबेले", "" 11 "," ब्रैंडफादर एंड संस "," XXXXXXXXXXXXXXX "," ब्रैंडफादर एंड संस "," "12", "इमेजिन ग्रुप", "xxxxxxxxxxxxxxxx", "इमेजिन ग्रुप", "" "13", "EduSquare.pl", "xxxxxxxxxxxxxxxxx", "EduSquare.pl", "" "101", "tmp", "xxxxxxxxxxxxxxxxxxxxx", "_", "example@sqldat"। "
एक > outfile.csv
जोड़ें उस एक-लाइनर के अंत में, उस तालिका के लिए अपनी CSV फ़ाइल प्राप्त करने के लिए।
इसके बाद, सभी . की सूची प्राप्त करें आपकी टेबल
. के साथmysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
वहां से, लूप बनाने के लिए यह केवल एक और कदम है, उदाहरण के लिए, बैश शेल में उन तालिकाओं पर पुनरावृति करने के लिए:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
do
. के बीच और ; done
ऊपर दिए गए भाग 1 में मेरे द्वारा लिखी गई लंबी कमांड डालें, लेकिन अपने टैबलेटनाम को $tb
. से बदलें इसके बजाय।