2011-09-22 13 views
47

से एकत्रित मानों के साथ SQL INSERT स्क्रिप्ट बनाएं, मुझे एक ही डेटाबेस में एक ही डेटाबेस में डालने के लिए एक INSERT स्क्रिप्ट बनाने की आवश्यकता है।
यदि SQL सर्वर में मैं "स्क्रिप्ट तालिका के रूप में> INSERT" का चयन करता हूं, तो मैं आसानी से INSERT कथन के लिए कंकाल को फिर से बना सकता हूं। हालांकि चूंकि मेरे पास माइग्रेट करने के लिए कई रिकॉर्ड हैं, इसलिए मैं मानों को मैन्युअल रूप से सम्मिलित करने से बचाना पसंद करूंगा।तालिका

इसलिए वहाँ किसी भी तरह से करने के लिए "स्वचालित रूप से" भी मान (लक्ष्य तालिका से आने वाले) पर भर साथ सम्मिलित स्क्रिप्ट है?

मुझे पता है कि यह एसएसआईएस के साथ किया जा सकता है, लेकिन मुझे आश्चर्य है कि यह एक त्वरित समाधान के साथ भी संभव होगा।

उत्तर

94

आप एसएसएमएस के साथ ऐसा कर सकते हैं।

1 - ऑब्जेक्ट एक्सप्लोरर में अपने डेटाबेस पर राइट-क्लिक करें।
2 - का चयन करें कार्य/उत्पन्न स्क्रिप्ट ...
3 - सेट स्क्रिप्टिंग विकल्प पर पेज, स्क्रिप्ट को उन्नत बटन क्लिक करें और डेटा के बारे में सुनिश्चित प्रकार बनाने डेटा केवल पर सेट है ।

परिणामस्वरूप लिपि में शीर्ष पर USE DATABASE कथन होगा। इसे उस डेटाबेस में बदलें जिसे आप डेटा डालना चाहते हैं।

+4

एफवाईआई आप उपकरण/विकल्प/एसक्यूएल सर्वर ऑब्जेक्ट एक्सप्लोरर/स्क्रिप्टिंग/सामान्य स्क्रिप्टिंग विकल्प/स्क्रिप्ट यूएसई

+0

के तहत 'यूएसई डाटाबेस' कमांड को बंद कर सकते हैं, आपको जेनरेट किए गए टी-एसक्यूएल से मैन्युअल रूप से किसी भी पहचान कॉलम को हटाने की आवश्यकता होगी यदि आप नए रिकॉर्ड डालने के लिए आउटपुट का उपयोग टेम्पलेट के रूप में कर रहे हैं, या IDENTITY_INSERT को सेट करें। –

6

उपयोग मुक्तSSMS tools pack to "generate insert statements"?

या SSMS (पुष्टि करने के लिए इस पीसी पर यह नहीं है) निर्यात जादूगरों आप "स्क्रिप्ट डेटा" बहुत

+0

निर्यात विज़ार्ड मुझे डेटा निर्यात करने की अनुमति देता है, लेकिन डेटा के साथ बयान नहीं। लेकिन टूल के लिए +1, बहुत अच्छा लग रहा है! – Francesco

+0

@ लुका: उपकरण आवश्यक है! एसएसएमएस विज़ार्ड के बारे में RedFilter के उत्तर की जांच करें। – gbn

+0

एसएसएमएस उपकरण पैक http://www.ssmstoolspack.com/ बहुत अच्छा है! –

1

यह डेटा प्रकार पर निर्भर करती है क्योंकि आप सशर्त उद्धरण में स्ट्रिंग मान जोड़ देना या स्ट्रिंग के रूप में संख्यात्मक मान कास्ट करने के लिए की आवश्यकता होगी रों। तुम भी समस्या पात्रों से निपटने के लिए की जरूरत है:

SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3) 
    SELECT ' + CONVERT(VARCHAR(12), col1) + ',' 
     + '''' + REPLACE(col2, '''', '''''') + ''',' 
     + '''' + REPLACE(col3, '''', '''''') + ''';' 
    FROM dbo.SourceTable; 

व्यास इस उद्देश्य के लिए एक pretty complex stored procedure है।

बेशक आप सिर्फ यह कह कर इस बहुत आसान कर सकते हैं:

INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3) 
    SELECT col1, col2, col3 FROM dbo.SourceTable; 

दूसरे शब्दों में, आप "स्क्रिप्ट" एक डालने, तुम बस चला सकते हैं की जरूरत नहीं है ...

+0

के लिए नि: शुल्क नहीं है दूसरा दृष्टिकोण बहुत आसान होगा, अगर रिमोट एक्सेस के बिना केवल एक पूरी तरह से अलग इंट्रानेट/सर्वर पर नहीं होगा :-( – Francesco

+0

@ लुका, उस मामले में एक फ़ाइल निर्यात करें और इसे लाएं एसएसआईएस या आयात निर्यात विज़ार्ड के साथ। – HLGEM

+0

@ एचएलजीईएम: रेडफिल्टर द्वारा प्रदान किया गया समाधान वह है जो मैं खोज रहा था, क्योंकि यह सबसे प्रत्यक्ष है। लेकिन संकेत के लिए धन्यवाद। – Francesco