2010-09-24 9 views
18

मेरे पास दो mysql टेबल हैं जिनमें दोनों में एक टाइपआईडी सामान्य है। मैं एक ही typeID के साथ इन दो तालिकाओं से सब कुछ का चयन करने के लिए इच्छुक रहा हूँ, नीचे क्वेरी:MySQL निर्यात क्वेरी डालने के बयान के रूप में

SELECT ta.requiredTypeID, ta.typeID, ta.quantity 
    FROM `invtypes` as t, `typeactivitymaterials` as ta 
    WHERE volume > 0 AND t.typeID = ta.typeID; 

यह मैं सही परिणाम देता है, लेकिन मैं डालने बयान के रूप में इस प्रश्न के निर्यात करने के लिए कोशिश कर रहा हूँ। मैंने इंटो आउटफाइल "/ पथ /" जोड़ने का प्रयास किया है, लेकिन यह केवल डेटा को टैब/कॉमा सीमांकित डेटा के रूप में निर्यात करता है, क्या यह डेटा डालने के बयान के रूप में निर्यात करना संभव है?

चीयर्स

EEF

उत्तर

11

हल करती है आप रिकॉर्ड डालने के लिए चयन के साथ सम्मिलित करें गठजोड़ कर सकते हैं:

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

+0

यह एक इलाज, उत्कृष्ट, चीयर्स की तरह काम किया। – RailsSon

41

इसके बजाय आप mysqldump उपयोग करने में सक्षम हो सकता है। पैरामीटर --tables और --where= देखें। मैं जानता हूँ कि यह बदसूरत है, लेकिन मुझे लगता है कि

select 
     concat(
     concat(
      concat(
      concat(
       concat(
       concat('insert into <table> (requiredTypeID, typeID, quantity) values ("' 
         ,ta.requiredTypeID) 
       ,'", "') 
      ,ta.typeID) 
      ,'", "') 
     ,ta.quantity) 
     ,'")') 
FROM 
     `invtypes` as t, `typeactivitymaterials` as ta 
WHERE 
     volume > 0 AND t.typeID = ta.typeID; 
INTO OUTFILE 'file_name' 

यह अपने मामले :)

+2

मुझे लगता है कि पूछा मूल प्रश्न के लिए इस सवाल का जवाब होगा। यह मेरे लिए खूबसूरती से काम किया! – Nico

+2

हां, और यदि विभिन्न मशीनों पर उदाहरण हैं तो बहुत अधिक उपयोगी हो सकता है। –

4

आप कुछ इस तरह कर सकते हैं सीधे एक चयन कथन के परिणाम से।

जिस तरह से आप कर यह कुछ इस तरह होगा:

INSERT INTO newtable (requiredTypeID, typeID, quantity) 
    SELECT ta.requiredTypeID, ta.typeID, ta.quantity 
     FROM `invtypes` as t, `typeactivitymaterials` as ta 
     WHERE volume > 0 AND t.typeID = ta.typeID; 

यहाँ प्रासंगिक MySQL manual page के लिए एक लिंक है।

ध्यान दें कि यह वास्तव में तुरंत सम्मिलित करेगा; यह आपके द्वारा पूछे जाने वाले कार्यों से काफी कुछ नहीं करेगा (जो बाद में उपयोग के लिए सम्मिलित विवरण उत्पन्न करना है)।

+2

यह मूल्यों से बचने के लिए करता है? –

+6

कॉन्सैट दो से अधिक पैरामीटर ले सकता है। –

22

यदि आपके पास MySQL वर्कबेंच है तो यह आपके लिए सम्मिलित विवरण उत्पन्न कर सकता है।

SQL संपादक में अपनी क्वेरी चलाएं, फिर परिणाम सेट से आप निर्यात बटन पर क्लिक कर सकते हैं। फिर "प्रकार के रूप में सहेजें" में "SQL INSERT कथन (* .sql)" के रूप में चुनें। सहेजें पर क्लिक करें, उस तालिका की पुष्टि करें जिसे आप निर्यात कर रहे हैं और ठीक क्लिक करें।

यदि आप फ़ाइल खोलते हैं तो आपको कॉलम नामों के साथ सम्मिलित विवरण के रूप में अपना परिणाम सेट देखना चाहिए।

मैंने केवल तालिका से एक साधारण चयन * पर इसका परीक्षण किया। मैंने कई तालिकाओं के साथ इसका परीक्षण नहीं किया है। आशा है कि ये आपकी मदद करेगा।

संपादित करें: कार्यक्षेत्र की तरह लगता है Windows, OSX और लिनक्स (धन्यवाद vcardillo)

+1

सुपर आसान, धन्यवाद। प्रकार के रूप में सहेजने के लिए ड्रॉप डाउन को भी नोटिस नहीं किया था। धन्यवाद! – vcardillo

+1

ओह भी, MySQL वर्कबेंच ओएसएक्स और लिनक्स के लिए भी मौजूद है। – vcardillo

3

बस, यहाँ इसे छोड़ने अगर किसी MySQLexport के रूप में क्वेरी insert बयान बनाने के लिए सटीक क्वेरी की तलाश में आता है, आप कर सकते हैं के लिए उपलब्ध है mysqldump का उपयोग @ a'r के रूप में करें।

mysqldump -u<user-name> -p<password> mydb t1 t2 t3 > mydb_tables.sql 
संबंधित मुद्दे