2012-01-26 15 views
8

के बाद नहीं मिली है, मुझे किसी तालिका से डेटा को एक सीएसवी में निर्यात करने की आवश्यकता है। मेरे पास निम्नलिखित संरचना है (वास्तव में मेरी तालिका नहीं बल्कि डेमो प्रयोजनों के लिए)फ़ाइल mysql निर्यात

CREATE TABLE `mytable` (
    `id` int(11) DEFAULT NULL, 
    `mycolumn` varchar(25) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

डेटा (लगभग 3000 रिकॉर्ड) के साथ। अब मैं

SELECT * INTO OUTFILE '/tmp/mytable.sql' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM mytable; 

यह पता चलता है (एक स्क्रिप्ट मैं cronjob के माध्यम से चलाने से) इन रिकॉर्ड के कुछ निर्यात करना चाहते हैं:

Query OK, 3 rows affected (0.00 sec) 

तो मुझे क्या:

ls: cannot access /tmp/mytable.sql: No such file or directory 

जहां मेरी फाइल है ?

+1

वहाँ अन्य स्क्रिप्ट चल रहा है कि/tmp फ़ोल्डर मिट जाता है? –

+0

@CornelGhiban no –

उत्तर

8

जब आप INTO OUTFILE कमांड का उपयोग करते हैं, तो यह डेटा के स्थानीय फ़ोल्डर में डेटा निर्यात करता है जिसे आप क्वेरी निष्पादित नहीं करते हैं।

उदाहरण: आप अपने कंप्यूटर पर हैं (आईपी: 1 9 2.168.0.100) और आप MySQL कमांड का उपयोग कर mysqlserver (ip: 192.168.0.101) से कनेक्ट होते हैं: mysql -uuser -h192.168.0.101 -A databaseSELECT * INTO OUTFILE निष्पादित करके फ़ाइल mysqlserver (ip: 192.168.0.101) पर सहेजी जाती है और आपके कंप्यूटर पर नहीं (आईपी: 1 9 2.168.0.100)।

अब, आप एक स्क्रिप्ट का उपयोग कर सकते हैं जो एक CSV फ़ाइल बनाता है (आपके cronjob में - आप सभी डेटा का चयन करते हैं, फ़ाइल जेनरेट करते हैं और अन्य सर्वर पर एसपीपी के माध्यम से भेजते हैं)।

या - आप /shared/ पर एक एनएफएस घुड़सवार भी हो सकते हैं और जब आप स्वचालित रूप से फ़ाइल बनाते हैं तो अन्य सर्वर में यह होता है।

या - आप बस अपने पहले सर्वर से बैश स्क्रिप्ट में एक mysql कमांड चला सकते हैं।

mysql -uroot test -B -e "select * from test.mytable;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/filename.csv 

स्रोत: http://tlug.dnho.net/node/209

+0

कोई पसंदीदा समाधान? –

+1

एनएफएस एक अच्छा समाधान है यदि आपको बहुत सारे डेटा (जैसे बहुत सारी फाइलें) उत्पन्न करना है। "एक सीएसवी फाइल जेनरेट करना" बहुत आसान हो सकता है और इसे अनुकूलन (जैसे पैरा इत्यादि ...) कमांड लाइन, बहुत आसान और तेज़ हो सकता है लेकिन आपको डबल कोट्स जैसे अक्षरों से सावधान रहना होगा, जो शायद डीबग करने के लिए थोड़ा मुश्किल हो (एसईडी कमांड के साथ)। –

+0

मैं अब MySQL सर्वर पर फ़ाइल देखता हूं, मुझे आपकी मदद के लिए कभी भी धन्यवाद नहीं लगता है, मुझे लगता है कि जेनरेट फाइलों के साथ बीएसएस सीएसवी में जाना है। –

संबंधित मुद्दे