2012-04-23 5 views
31

मैं MySQL वर्कबेंच में लगभग 1,000,000 रिकॉर्ड्स के क्वेरी परिणाम को सहेजने का प्रयास कर रहा हूं।1000 अंकों से परे MySQL वर्कबेंच में क्वेरी परिणाम निर्यात करना

जब मैं चयन चलाता हूं, केवल 1000 रिकॉर्ड दिखाते हैं (MySQL वर्कबेंच की डिफ़ॉल्ट सीमा)। मुझे पता है कि मैं सीमा बदल सकता हूं, या सीमा को हटा सकता हूं, लेकिन मैं नहीं चाहता कि परिणाम पैनल में 1,000,000 रिकॉर्ड लोड हो जाएं (जो मेरे कंप्यूटर को क्रैश कर सकता है?), लेकिन मैं परिणाम को फाइल में सहेजना चाहता हूं।

क्या MySQL वर्कबेंच आपको क्वेरी के परिणामों को सीधे फ़ाइल में सहेजने देता है? या 1,000 के बजाय पूरे परिणाम सेट को बचाओ?

+1

मैं एक PHP स्क्रिप्ट भी लिख सकता हूं जो क्वेरी करता है, और CSV पर आउटपुट करता है, लेकिन यह मेरे सर्वर को भी क्रैश कर सकता है, है ना? यदि आप संलग्न करने के लिए fopen() fopen, एक बड़ी फ़ाइल समस्याग्रस्त हो जाएगा? –

+0

मैं वर्कबेंच से परिचित नहीं हूं, लेकिन आप एक समय में केवल 1000 रिकॉर्ड प्राप्त करने के लिए एक स्क्रिप्ट लिख सकते हैं, बस ऑफसेट को हर बार सही ढंग से सेट करना (यानी एफआईआरएस समय 'LIMIT 0,1000', दूसरी बार' LIMIT 1000,1000', फिर 'LIMIT 2000,1000', आदि ...), प्रत्येक बार एक फ़ाइल में परिणाम जोड़ना। स्मृति में पूरे मिलियन रिकॉर्ड रखने की आवश्यकता नहीं है, या फ़ाइल में एक बार में सभी को लिखने की कोशिश करें। –

+0

अन्य जटिलता यह है कि क्वेरी को अन्य रिकॉर्डों को संदर्भित करना होगा। यह एक एसयूएम() करता है और परिणाम सेट में रिकॉर्ड होने की अनुमति देने से पहले एसएएम को एक हैविंग के साथ जांचता है।तो मुझे पहले पूरे डेटा सेट को संसाधित करने की आवश्यकता है, फिर इसे आउटपुट करें। –

उत्तर

30

क्वेरी परिणाम पंक्ति सीमा को बदलना संभव है, या पूरी तरह से सीमा को हटा देना संभव है।

  1. जाओ के लिए संपादित करें → पसंद → एसक्यूएल संपादक (टैब)। यदि आपको क्वेरी परिणाम नहीं मिल रहे हैं, तो SQL क्वेरीज़ (टैब) पर जाएं।

  2. जानें क्वेरी परिणाम अनुभाग और सीमा पंक्तियाँ untick चेकबॉक्स

  3. क्लिक करें ठीक

  4. अपनी क्वेरी को दोबारा चलाएं।

+15

* "मैं लगभग 1,000,000 रिकॉर्ड्स के एक क्वेरी परिणाम को सहेजने की कोशिश कर रहा हूं" * इस मामले में मुझे नहीं लगता कि सीमा को हटाने का कार्यवाही सही तरीका है। – vbence

+7

MySQL वर्कबेंच 5.2 में उन्होंने * सीमा संपादक * विकल्प को 'एसक्यूएल एडिटर' से 'एसक्यूएल क्वेरीज़' टैब में ले जाया। –

+1

'संपादित करें'> 'प्राथमिकताएं'> 'एसक्यूएल संपादक'> 'एसक्यूएल निष्पादन' MySQL वर्कबेंच पर 6.3 उबंटू लिनक्स – tenCupMaximum

37

LOAD DATA INFILE एक भाई SELECT ... INTO OUTFILE आह्वान किया है। आप इसका उपयोग इस प्रकार कर सकते हैं:

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

यह विधि यूआई में अनावश्यक संसाधनों का उपयोग नहीं करेगी।

@florian के रूप में बताया: यह, हालांकि, डेटाबेस सर्वर पर आउटपुट फ़ाइल पैदा करेगा, क्लाइंट मशीन पर नहीं।

भी ध्यान रखें कि सुरक्षा फ्रेमवर्क की तरह SELinux या निकल रहा मानक डेटाबेस के बाहर फ़ाइलों को लिख फ़ोल्डर से MySQL तक नहीं पहुंच पाएंगे। यदि आपको अनुभव का अनुभव त्रुटियों से वंचित कर दिया गया है, भले ही निर्देशिका mysql उपयोगकर्ता द्वारा लिखने योग्य हो, तो यह संभवतः इनमें से एक है।

+0

पर अगर अनुमति जारी है, तो मैं इस विकल्प के साथ गया https://dev.mysql.com/doc/refman/5.5 /en/cannot-create.html – vsingh

2

बस 'सीमा $ संख्या' जोड़ें जो SQL खंड को जोड़ता है। यदि आप सीमा नहीं जोड़ते हैं, तो डिफ़ॉल्ट लौटाई गई पंक्ति 1000 है।

+0

यह प्रश्न का उत्तर नहीं देता है कि – Bowdzone

+1

मेरे लिए काम करता है, बड़ी संख्या में सीमा जोड़ें और फिर सभी पंक्तियां लौटा दी गईं और आप उन्हें निर्यात कर सकते हैं। – dweebo