सवाल एसक्यूएल सर्वर - डेटाबेस तालिका की एक प्रति बनाएं और इसे उसी डेटाबेस में रखें?


मेरे पास डेटाबेस डीबी में एक टेबल एबीसी है। मैं उसी डीबी में एबीसी_1, एबीसी_2, एबीसी_3 नामों के साथ एबीसी की प्रतियां बनाना चाहता हूं। मैनेजमेंट स्टूडियो (अधिमानतः) या एसक्यूएल प्रश्नों का उपयोग करके मैं इसे कैसे कर सकता हूं?

यह SQL सर्वर 2008 R2 के लिए है।


44
2018-03-15 08:55


मूल


एक और पोस्ट सीधे संबंधित नहीं है, लेकिन उपर्युक्त उपयोग-मामले से संबंधित हो सकता है - stackoverflow.com/questions/6810425/... जब आप प्रतियों को फिर से बनाने के बिना तालिका की प्रतियों को संपादित करना चाहते हैं तो यह उपयोगी हो सकता है (उदाहरण के लिए, नल की अनुमति दें, डेटा प्रकार बदलें आदि)। - sequel.learner


जवाब:


उपयोग SELECT ... INTO:

SELECT *
INTO ABC_1
FROM ABC;

यह एक नई टेबल तैयार करेगा ABC_1 जिसकी समान कॉलम संरचना है ABC और एक ही डेटा है। बाधाएं (उदा। कुंजी, डिफ़ॉल्ट मान), हालांकि, कॉपी नहीं की गई हैं।

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


यदि आपको डेटा की प्रतिलिपि बनाने की आवश्यकता नहीं है, केवल उसी कॉलम संरचना के साथ एक नई खाली तालिका बनाने के लिए, एक जोड़ें WHERE एक झूठी अभिव्यक्ति के साथ खंड:

SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;

105
2018-03-15 08:57



मेरी समस्या के लिए बिल्कुल सही जवाब। - sequel.learner
पूरी तरह से काम नहीं करता .... मूल में गणना कॉलम लक्ष्य में समान नहीं हैं। इसके अलावा, पीके और डिफ़ॉल्ट बाधाओं की प्रतिलिपि बनाई गई नहीं है - Simon Green
@ सिमोनग्रीन - आप इस समस्या के लिए अपने कोड के साथ एक नया प्रश्न पोस्ट कर सकते हैं। - Mahmoud Gamal
बेशक यह पूरी तरह से काम नहीं करता है। उन्होंने चेतावनी दी कि बाधाओं की प्रतिलिपि नहीं बनाई गई है, न ही प्राथमिक कुंजी, या डिफ़ॉल्ट मान। वह आदेश जो एक ही कॉलम संरचना के साथ एक नई तालिका बनाता है (जैसे उसने कहा) और सभी डेटा को आपके लिए नई तालिका में सम्मिलित करता है। - user5855178


एसएसएमएस यूआई के माध्यम से स्कीमा (डीडीएल जेनरेट करें) कॉपी करें

एसएसएमएस में अपने डेटाबेस का विस्तार करें वस्तु एक्सप्लोरर, के लिए जाओ टेबल्स, उस तालिका पर राइट क्लिक करें जिसमें आप रुचि रखते हैं और चुनें स्क्रिप्ट टेबल के रूप में, बनाने के लिए, नई क्वेरी संपादक विंडो। एक खोज करें और प्रतिस्थापित करें (CTRL + एच) तालिका का नाम बदलने के लिए (यानी डाल दिया ABC में क्या ढूँडो क्षेत्र और ABC_1 में से बदलो तब दबायें ठीक)।

टी-एसक्यूएल के माध्यम से स्कीमा कॉपी करें

अन्य उत्तरों यह दिखाते हैं कि एसक्यूएल द्वारा इसे कैसे किया जाए, यह भी अच्छी तरह से काम करता है, लेकिन इस विधि के साथ अंतर यह है कि आपको कोई इंडेक्स, बाधाएं और ट्रिगर्स भी मिलेंगे।

डेटा कॉपी करें

यदि आप डेटा शामिल करना चाहते हैं, तो इस तालिका को बनाने के बाद नीचे दिए गए स्क्रिप्ट को एबीसी से सभी डेटा कॉपी करने के लिए चलाएं (यदि आपके पास पहचान फ़ील्ड है तो उसी आईडी मान रखें):

set identity_insert ABC_1 off
insert into ABC_1 select * from ABC
set identity_insert ABC_1 on

10
2018-03-15 09:16





पहला विकल्प

select *
  into ABC_1
  from ABC;

दूसरा विकल्प: एसएसआईएस का उपयोग करें, जो ऑब्जेक्ट एक्सप्लोरर> सभी कार्यों> निर्यात डेटा में डेटाबेस पर राइट क्लिक है

  • स्रोत और लक्ष्य: आपका डीबी
  • स्रोत तालिका: एबीसी
  • लक्ष्य तालिका: एबीसी_1 (तालिका बनाई जाएगी)

3
2018-03-15 08:59





तालिका और उसके डेटा, बाधाओं और ट्रिगर्स की प्रतिलिपि बनाने के लिए आपको एसएसआईएस लिखना होगा। हमारे संगठन में हमारे पास कलम सिस्टम्स द्वारा कल एडमिन नामक एक सॉफ्टवेयर है जिसमें डाउनलोड करने के लिए एक मुफ्त संस्करण है (मुझे लगता है कि कॉपी टेबल सुविधा वैकल्पिक है)


3
2018-06-01 04:57





यदि आप अपनी सभी बाधाओं के साथ तालिका को डुप्लिकेट करना चाहते हैं और चाबियाँ निम्न चरणों का पालन करती हैं:

  1. एसक्यूएल प्रबंधन स्टूडियो में डेटाबेस खोलें।
  2. उस तालिका पर राइट-क्लिक करें जिसे आप डुप्लिकेट करना चाहते हैं।
  3. स्क्रिप्ट तालिका का चयन करें -> बनाएं -> नई क्वेरी संपादक विंडो। यह एक नई क्वेरी विंडो में तालिका को फिर से बनाने के लिए एक स्क्रिप्ट उत्पन्न करेगा।
  4. स्क्रिप्ट में तालिका का नाम और सापेक्ष कुंजी और बाधाओं को बदलें।
  5. स्क्रिप्ट निष्पादित करें।

फिर डेटा को कॉपी करने के लिए नीचे इस स्क्रिप्ट को चलाएं:

SET IDENTITY_INSERT DuplicateTable ON

INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... ) 
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable

SET IDENTITY_INSERT DuplicateTable OFF

2
2017-09-11 02:14





एसक्यूएल सर्वर प्रबंधन स्टूडियो या नेटकैट का उपयोग करें और एसक्यूएल में हेरफेर करना आसान होगा


1
2018-03-15 08:59





यह एक और विकल्प है:

select top 0 * into <new_table> from <original_table>

1
2018-05-11 02:23



यह अनुरोध डेटा के बिना तालिका प्रतिलिपि बनाता है। उपयोगकर्ता ने टेबल कॉपी करने के लिए कहा। - Alekzander