डेटा को किसी अन्य तालिका में कॉपी करें


154

SQL सर्वर में एक ही स्कीमा के साथ एक टेबल से दूसरे टेबल में डेटा कॉपी / अपेंड कैसे करें?

संपादित करें:

मान लीजिए कि एक क्वेरी है

select * 
into table1 
from table2 
where 1=1 

जो table1एक ही स्कीमा के साथ-साथ डेटा में भी बनाता है table2

क्या इस तरह की कोई छोटी क्वेरी केवल संपूर्ण डेटा को केवल पहले से मौजूद तालिका में कॉपी करने के लिए है?


पूरी जानकारी के लिए, सावधान रहें, यह आदेश तालिका के अनुक्रमित और ट्रिगर्स की नकल न करें! कॉपी इंडेक्स और ट्रिगर्स स्क्रिप्ट के लिए निम्न पोस्ट देखें: stackoverflow.com/questions/7582852/…
होसो

इसे कैसे हल करें? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

जवाबों:


310

यदि दोनों तालिकाएं वास्तव में एक ही स्कीमा हैं:

INSERT INTO newTable
SELECT * FROM oldTable

अन्यथा, आपको कॉलम के नाम निर्दिष्ट करने होंगे ( newTableयदि आप सभी कॉलमों के लिए मान निर्दिष्ट कर रहे हैं और कॉलम उसी क्रम में कॉलम का चयन कर रहे हैं तो कॉलम सूची वैकल्पिक है newTable):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable

1
क्या होगा अगर मैं blank dataकुछ कॉलम के लिए प्रवेश करना चाहता हूँ ??
hud

3
@ कोड यह सिर्फ एक चुनिंदा खंड है, इसलिए आप इसमें कुछ भी डालने का स्वागत करते हैं, जिसमें आप स्पष्ट NULLएस, स्ट्रिंग स्थिरांक, अभिव्यक्ति या यहां तक ​​कि उपश्रेणियाँ भी शामिल हैं।
एलसी।

यह काम क्यों नहीं करता हैINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum क्योंकि आपकी स्केलर क्वेरी एक से अधिक कॉलम का चयन कर रही है। Stackoverflow.com/questions/4141370/… और stackoverflow.com/questions/6254913/…
lc

1
यदि दोनों तालिकाएँ समान स्कीमा प्रस्तुत करती हैं, लेकिन हाँ पर 'आइडेंटिटी स्पेसिफिकेशन' वाला एक कॉलम होता है, तो एसक्यूएल स्टेटमेंट को आइडेंटिटी स्पेसिफिकेशन वाले एक को छोड़कर, सभी कॉलमों की गणना करनी होगी।
गेब्रियल मारियस पोपेस्कु

18

यह इसे करने का उचित तरीका है:

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

सरल तरीका यदि नई तालिका मौजूद नहीं है और आप SQL सर्वर में काम करता है तो सब कुछ के साथ पुरानी तालिका की एक प्रतिलिपि बनाना चाहते हैं।

SELECT * INTO NewTable FROM OldTable




4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

कॉलम नाम समान होना अनिवार्य नहीं है।


3

चयनित कॉलम को शर्त के साथ डालें

INSERT INTO where_to_insert (col_1,col_2) SELECT col1, col2 FROM from_table WHERE condition;

एक ही कॉलम नाम के साथ एक टेबल से दूसरे में सभी डेटा कॉपी करें।

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

पहली क्वेरी संरचना बनाएगा से table1करने के लिए table2और दूसरा क्वेरी से डेटा रखा जाएगा table1करने के लिएtable2

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.