2010-05-19 18 views
5

मैं एक बहुत बड़ी तालिका को डुप्लिकेट करना चाहता हूं, लेकिन मैं इसे पंक्ति से प्रतिलिपि नहीं बनाना चाहता हूं। क्या इसे डुप्लिकेट करने का कोई तरीका है?एक समय में एक पंक्ति की प्रतिलिपि किए बिना MYSQL में तालिका डुप्लिकेटिंग

उदाहरण के लिए, आप TRUNCATE कर सकते हैं w/ओ को हटाने पंक्ति/पंक्ति, तो मैं सोच रहा था अगर वहाँ पूरे टेबल कॉपी करने के लिए कुछ इसी तरह है

अद्यतन: पंक्ति सम्मिलित करने से पंक्ति बहुत ही दर्दनाक है (क्योंकि की 120M पंक्तियाँ) । वैसे भी इससे बचने के लिए?

उत्तर

5

MySQL में अब एक विश्वसनीय "प्रतिलिपि तालिका" कार्यक्षमता नहीं है - डेटा से संग्रहीत करने के तरीके से संबंधित इसके कई कारण हैं। हालांकि, नीचे पंक्ति-दर-पंक्ति प्रविष्टि करता है लेकिन बहुत सरल है:

CREATE TABLE `new_table` LIKE `old_table`; 
INSERT INTO `new_table` (SELECT * FROM `old_table`); 
+1

+1 *। [हंसी] – pinkgothic

+0

आउच। मेरे पास एक बड़ी मेज है, और पंक्ति डालने वाली पंक्ति बहुत दर्दनाक है –

+0

मुझे इससे नफरत है! :) – AvatarKava

4

आप INSERT INTO ... SELECT इस्तेमाल कर सकते हैं।

+0

दुर्भाग्य से, यह काम नहीं करेगा साथ ही उत्तर @AvatarKava भी प्रदान करेगा, क्योंकि यह auto_increment जैसे गुणों की प्रतिलिपि नहीं करेगा ... –

+0

श्रीमान? हमारे उत्तर समान हैं, @ अवतारकाव के अलावा, मेक-टेबल लाइन का उल्लेख है जिसे मैंने केवल निहित किया है (यही कारण है कि मैंने उन्हें ऊपर उठाया), और मैं बदले में दस्तावेज़ीकरण से जुड़ा हुआ हूं। अन्यथा हम एक ही बात कह रहे हैं। ओ @। – pinkgothic

1
INSERT INTO TABLE2 SELECT * FROM TABLE1 
+0

दुर्भाग्यवश, यह काम @AvatarKava के साथ-साथ उत्तर नहीं देगा, क्योंकि यह auto_increment जैसे गुणों की प्रतिलिपि नहीं करेगा ... –

+0

ठीक है, उनको कॉपी करने का एकमात्र तरीका उनको पुनर्निर्मित करना है .. लेकिन सच है, वह अकेला जीता चाल नहीं है। – modz0r

2

यदि आप MyISAM का उपयोग कर रहे हैं तो आप डिस्क पर भौतिक फाइलों की प्रतिलिपि बना सकते हैं। सेवा को पुनरारंभ करें और आपके पास इंडेक्स और सबकुछ के साथ नई तालिका होगी।

+1

मैं innodb का उपयोग कर रहा हूँ। क्या यह लागू होता है? –

+0

दुर्भाग्य से नहीं :( – AvatarKava

+0

क्यों नहीं? उत्सुक! –

1

एक बड़ी तालिका की प्रतिलिपि बनाना नॉनट्रिविअल है; आखिरकार डेटाबेस को इसे पुनर्निर्माण करने की आवश्यकता है।

इनो डीबी में एकमात्र तरीका वास्तव में इसे पुनर्निर्माण करना है, जिसका अर्थ है डालने ... का चयन करें या ऐसा करना, हालांकि, 120 एम पंक्तियों के साथ, जैसा कि यह एक लेनदेन में होने वाला है, आप शायद रोलबैक के आकार से अधिक हो जाएंगे क्षेत्र, जिससे सम्मिलन विफल हो जाएगा।

mysqldump मूल तालिका का नाम बदलकर उसके बाद डंप को बहाल करना चाहिए, क्योंकि mysqldump प्रत्येक पंक्तियों को प्रतिबद्ध कर सकता है। हालांकि यह धीमा हो जाएगा।

0

ओरेकल:

मुझे ninja'ing के लिए तालिका टी बनाएं चयन के रूप में से original_table

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

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