2008-09-11 8 views
69

मेरे पास दो समान सारणी हैं और पंक्तियों को तालिका से दूसरे में प्रतिलिपि बनाने की आवश्यकता है। उसे करने का सबसे अच्छा तरीका कौन सा है? (मुझे केवल कुछ पंक्तियों को प्रोग्रामेटिक रूप से कॉपी करने की आवश्यकता है, मुझे थोक प्रति उपयोगिता का उपयोग करने की आवश्यकता नहीं है)।एक SQL सर्वर तालिका से किसी अन्य पंक्ति में प्रतिलिपि कैसे करें

उत्तर

92

जब तक वहाँ कोई पहचान स्तंभ हैं आप कर सकते हैं बस

INSERT Table2 
SELECT * FROM Table1 
WHERE [Conditions] 
+19

इस वाक्यविन्यास से सावधान रहें क्योंकि तालिका 2 में पहचान कॉलम होने पर यह काम नहीं करेगा और यह भविष्य में तोड़ देगा यदि टेबल 1 सिंक में बदलकर तालिका 2 के बिना कभी भी बदलता है (मुझे पहले जला दिया गया है)। यह समाधान आपके मामले के लिए बिल्कुल सही हो सकता है, बस इन विचारों से अवगत रहें। –

+8

आप जिस तालिका को सम्मिलित करने का प्रयास कर रहे हैं उस पर पहचान कॉलम अस्थायी रूप से अक्षम करने के लिए आप 'SET IDENTITY_INSERT < table > ON' (और' SET IDENTITY_INSERT < table > OFF') का उपयोग कर सकते हैं। मेरे लिए डेटासेट के बीच में कुछ लापता रिकॉर्ड बहाल करने की कोशिश कर रहा है। – nickb

+1

क्या होगा यदि तालिका 1 में प्राथमिक कुंजी तालिका 2 में विदेशी कुंजी के रूप में मौजूद है? मेरे पास एक ही बात है, और मुझे नहीं पता कि क्या करना है .. तालिका 2 आईडी में विदेशी कुंजी AS "Technology_idTechnology" और तालिका 1 में, यह "idTechnology" के रूप में है, मैं तालिका 1 से सभी प्रविष्टियों की प्रतिलिपि बनाना चाहता हूं table2, जब idTechnology दोनों टेबलों में मेल खाता है .. – ZelelB

5
SELECT * INTO <new_table> FROM <existing_table> WHERE <clause> 
+1

वहाँ यह करने के लिए इस दो तालिकाओं एसक्यूएल सर्वर में diff डेटाबेस में हैं, तो कोई तरीका है। – Naresh

+9

ज़रूर! बस डेटाबेस को पूरी तरह अर्हता प्राप्त करें। [Servername]। [स्कीमा]। [तालिका]। उदाहरण के लिए 'चयन करें [INTO [SQLTEST]। [Dbo]। [EMPLOYEES] [SQLPROD] से। [Dbo]। [EMPLOYEES] ' –

+3

यह एक नई तालिका बनाता है, जो ओपी के लिए नहीं पूछ रहा है। – Conrad

62

वैकल्पिक वाक्य रचना:

INSERT tbl (Col1, Col2, ..., ColN) 
    SELECT Col1, Col2, ..., ColN 
    FROM Tbl2 
    WHERE ... 

चयन क्वेरी कर सकते हैं (बेशक) भाव, मामले बयान, स्थिरांक शामिल/शाब्दिक, आदि

+1

यह बहुत अच्छा है जब टेबल थोड़ा अलग होता है। मेरे पास मेरी दूसरी तालिका में कुछ अतिरिक्त कॉलम हैं और स्वीकृत उत्तर एमएसएसएलएल के साथ काम नहीं करता है क्योंकि उन्हें समान होने की आवश्यकता है। –

5
INSERT INTO DestTable 
SELECT * FROM SourceTable 
WHERE ... 

SQL सर्वर

+2

यह केवल तभी काम करता है जब DestTable मौजूद नहीं है। यदि इस क्वेरी से पहले DestTable बनाया गया है तो आपको एक त्रुटि मिलेगी। –

+1

वास्तव में यह विफल रहता है यदि गंतव्य तालिका मौजूद नहीं है। मौजूदा डिस्टटेबल खाली नहीं होने पर यह त्रुटियों का कारण बन सकता है। – Kaniu

33

में काम करता है Jarrett का उत्तर एक नई तालिका बनाता है।

स्कॉट का उत्तर उसी संरचना के साथ मौजूदा तालिका में प्रवेश करता है।

तुम भी अलग संरचना के साथ एक तालिका में सम्मिलित कर सकते हैं:

INSERT Table2 
(columnX, columnY) 
SELECT column1, column2 FROM Table1 
WHERE [Conditions] 
+6

@ स्कॉटस्टोनहाउस: यदि आप इस उत्तर में अन्य सभी उत्तरों को इकट्ठा करते हैं जैसे आपने किया है लेकिन कोड के साथ (इसे व्यापक बनाना), तो आप निश्चित रूप से सबसे अच्छा जवाब बन जाएंगे। –

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