2009-06-23 14 views
8

मेरे पास एक क्वेरी है जो प्रत्येक पंक्ति के दो स्तंभों से डेटा को फ़ाइल में निर्यात करती है।MySQL: क्वेरी में कैरिज-रिटर्न

row1column1
row1column2
row2column1
row2column2
row3column1
row3column2

मैं चार उपयोग करने की कोशिश (13): प्रत्येक स्तंभ से फ़ाइल डेटा में गाड़ी-रिटर्न, कुछ इस तरह से अलग किया जाना चाहिए :

SELECT CONCAT(column1, char(13), column2) FROM my_table INTO outfile 'my_file' 

और आउटपुट फ़ाइल पूरी तरह से ठीक लग रहा था (eac एच कॉलम डेटा एक और पंक्ति में था), लेकिन जब मैंने इसे किसी प्रोग्राम में इनपुट के रूप में उपयोग किया जिसे वर्णित प्रारूप को स्वीकार करना चाहिए, तो उसे पहचान नहीं आया। हालांकि, जब मैंने फ़ाइल में सभी कैरिज-रिटर्न को मैन्युअल रूप से मिटा दिया और "एंटर" कुंजी दबाकर उन्हें फिर से जोड़ा, तो मेरे प्रोग्राम ने बिना किसी समस्या के फाइल को पहचाना। मैं चार (13), चार (10) के साथ की कोशिश की, मेरी आउटपुट फ़ाइल इस तरह देखा:

row1column1
\
row1column2
row2column1
\
row2column1

मुझे यकीन है कि मुझे यहां कुछ स्पष्ट याद आ रही है :)

+0

फ़ाइल आउटपुट , सीएसवी फ़ाइल का प्रारूप क्या है? –

उत्तर

7

मैं इसे mysql साइट में देखता हूं, आशा करता हूं कि आपकी मदद करें।

आप लिए निम्न सिंटैक्स का उपयोग प्रारूप माइक्रोसॉफ्ट एक्सेल द्वारा की उम्मीद में CSV फ़ाइल बनाना चाहिए:

... outfile '/temp.csv' मैदान सहायता से निकले में ' ""' इन्हें समाप्त ',' द्वारा '\ r \ n' समाप्त लाइनों से ' "' संलग्न;

हालांकि गाड़ी के साथ क्षेत्रों रिटर्न सीएसवी MySQL के रूप में तोड़ स्वचालित रूप से एक क्षेत्र बंद हो जाएगा हो सकता है जब \ आर \ n लाइन ब्रेक पाया जाता है। इसके आसपास काम करने के लिए, सभी \ r \ n ब्रेक \ n के साथ बदलें। यह क्षेत्र \ n ब्रेक पर बंद नहीं होता है और इसे Excel में एकल सेल में पढ़ा जाएगा। आप उदाहरण के लिए एक ही SQL विवरण में इस कर सकते हैं,:

चयन REPLACE (field_with_line_breaks, '\ r \ n', '\ N') तालिका से outfile '/temp.csv' में मैदान से बच गया द्वारा ' ""' द्वारा ',' समाप्त से घिरा ' "' लाइनें द्वारा समाप्त '\ r \ n';

मैंने यह भी पाया कि शून्य मान सीएसवी को तोड़ सकते थे ये एक में संभाला जा सकता है। इसी प्रकार:

चयन IFNULL (possible_null_field, "") आउटपुट में टेबल से '/ temp।सीएसवी ' मैदान से निकले' "" ' द्वारा समाप्त', 'से घिरा' " 'लाइनों द्वारा समाप्त' \ r \ n ';

नोट: इस साथ शून्य मान की जगह कोई रिक्त स्ट्रिंग जो तकनीकी रूप से है नहीं एक ही बात है, लेकिन यह आप Excel में एक खाली सेल सीएसवी संरचना को तोड़ने और के बजाय दे देंगे बाईं ओर निम्नलिखित कोशिकाओं स्थानांतरण

4

सिर्फ चार का प्रयास करें (10) -। कि "है \ एन "- यूनिक्स तरीका
जस्ट चार (13) "\ r" (पुराना) मैक रास्ता है और "\ r \ n" विंडोज़ तरीका है, लेकिन मुझे संदेह है कि MySQL सिर्फ प्रत्येक पंक्ति के लिए \ n का उपयोग करता है, इसलिए आपको उससे मेल खाना पड़ेगा।

+0

जो सिर्फ दो कॉलम – Daniel

+0

के बीच "\" रखता है ध्यान दें कि सीएलआई (mysql -Ne) पर काम करने के लिए क्वेरी प्राप्त करने के लिए मुझे उपयोग के बिना फ़ील्ड लिखना था। - बैच के साथ प्रयोग किया जाता है। एचटीएच, दान। –

1

आपको ऑपरेटिंग सिस्टम के बीच नई लाइन की व्याख्या में अंतर के साथ समस्याएं हो सकती हैं।

अपने MySQL डेटाबेस यूनिक्स/लिनक्स पर है, और एक फाइल यूनिक्स पर पढ़ा जाएगा या डेटाबेस विंडोज पर है और Windows पर पढ़ा जाएगा तो यह प्रयास करें: यदि आपके MySQL डेटाबेस पर है

select * into outfile 'my_file' 
fields terminated by '\n' lines terminated by '\n' 
from my_table; 

एक छोटी सी, कमांड लाइन का उपयोग कर (यूनिक्स) नई-पंक्तियों

select * into outfile 'my_file' 
fields terminated by '\r\n' lines terminated by '\r\n' 
from my_table; 

तुम भी "CRLF" (Windows) और "वामो" के बीच एक फ़ाइल को रूपांतरित कर सकते हैं: यूनिक्स/लिनक्स, और एक फ़ाइल विंडोज पर पढ़ा जाएगा तो यह कोशिश उपयोगिता को डॉस 2unix और unix2dos कहा जाता है, जो अधिकांश लिनक्स वितरण में शामिल है।

4

हैम Evgi का जवाब काम करता है, लेकिन:

SELECT REPLACE(field_with_line_breaks, '\r\n', '\n') FROM table INTO OUTFILE '/temp.csv' FIELDS ESCAPED BY '""' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; 

मैं करने के लिए बदलना पड़ा:

SELECT REPLACE(field_with_line_breaks, '\r\n', '\n') FROM table INTO OUTFILE '/temp.csv' FIELDS ESCAPED BY '"' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; 

क्षेत्रों में एक दोहरे उद्धरण सहायता से निकले, जो mysql में इस त्रुटि दे दी थी: " त्रुटि 1083: फ़ील्ड विभाजक तर्क अपेक्षित नहीं है; मैन्युअल जांचें "।

इसे एक ही उद्धरण में बदलने से त्रुटि रोक दी गई और एक फ़ाइल निर्यात की गई। मैं फिर इसे एक्सेल सफलतापूर्वक आयातित न्यूलाइन के साथ एक्सेल में आयात करने में सक्षम था।

+0

मुझे लगता है कि आपको अभी हैम इग्गी के जवाब को संपादित करना चाहिए था। मैंने वह किया; यह अभी तक स्वीकृत नहीं है। –