डेटा निर्यात करना SQL सर्वर में INSERT INTO के रूप में


413

मैं SQL Server 2008 मैनेजमेंट स्टूडियो का उपयोग कर रहा हूं और एक टेबल है जिसे मैं एक अलग डीबी सर्वर पर माइग्रेट करना चाहता हूं।

क्या एसक्यूएल स्क्रिप्ट में डालने के रूप में डेटा को निर्यात करने का कोई विकल्प है ??

जवाबों:


682

ऑब्जेक्ट एक्सप्लोरर में SSMS में, डेटाबेस पर राइट-क्लिक करें, "टास्क" पर राइट-क्लिक करें और फिर "स्क्रिप्ट जेनरेट करें"।

यह आपको एकल या सभी तालिकाओं के लिए स्क्रिप्ट उत्पन्न करने की अनुमति देगा, और विकल्पों में से एक "स्क्रिप्ट डेटा" है। यदि आप इसे TRUE पर सेट करते हैं, तो विज़ार्ड आपके डेटा के लिए INSERT INTO () स्टेटमेंट के साथ एक स्क्रिप्ट उत्पन्न करेगा।

यदि 2008 R2 या 2012 का उपयोग करते हुए इसे कुछ और कहा जाता है, तो नीचे दिए गए स्क्रीनशॉट को देखें

वैकल्पिक शब्द

2008 R2 या बाद में उदा 2012

"स्क्रिप्ट के प्रकार के डेटा" का चयन करें जो "डेटा ओनली", "स्कीमा और डेटा" या "स्कीमा ओनली" - डिफ़ॉल्ट हो सकता है)।

यहां छवि विवरण दर्ज करें

और फिर वहाँ एक " SSMS ऐड " Codeplex (स्रोत सहित) जो बहुत ज्यादा एक ही कार्यक्षमता और कुछ और (त्वरित लगता है जैसे आदि) का वादा किया पर पैकेज

वैकल्पिक शब्द


मैंने अभी कोडप्लेक्स से एडिन को स्थापित किया है। अच्छा लगा। जानकारी के लिए धन्यवाद।
रॉब गैरीसन

1
SMSS Add 2008 में मेरे लिए काम किया। डेटा स्क्रिप् ट ऐड इन नहीं हुआ।
फिल हेल

5
2008 R2 में विकल्प "स्क्रिप्ट के प्रकार के डेटा" को "सेट स्क्रिप्टिंग विकल्प" स्क्रीन पर पाया जा सकता है। वहां "उन्नत" बटन दबाएं।
रेमी

3
क्या ये एडिंस 2008 R2 में काम करते हैं? SSMS Addin लोड पर एक अपवाद फेंक रहा है।
13


117

अधिक स्पष्ट बुद्धिहीनता के लिए, यहाँ पर marc_s के निर्देशों का पालन करने के बाद ...

ऑब्जेक्ट एक्सप्लोरर में एसएसएमएस में, डेटाबेस पर राइट-क्लिक करें और "टास्क" चुनें और फिर "जनरेट स्क्रिप्ट्स" को चुनें।

... मैं फिर " परिचय, ऑब्जेक्ट्स, सेट स्क्रिप्टिंग विकल्प, सारांश और सहेजें या प्रकाशित स्क्रिप्ट प्रकाशित " के साथ एक विजार्ड स्क्रीन देखता हूं , जिसके निचले भाग में अगले, अगले, समाप्त बटन को रद्द करता है।

पर सेट स्क्रिप्टिंग विकल्प कदम है, तो आप के लिए है पर क्लिक करें "उन्नत" विकल्प के साथ पेज को पाने के लिए। फिर, जैसा कि घ्लौव ने उल्लेख किया है, अब आप "स्क्रिप्ट के प्रकार के डेटा" और लाभ का चयन करें।

लाल रंग में उन्नत बटन! 1 !!


13
धन्यवाद, इस बटन में बहुत सहज प्लेसमेंट नहीं है। मुझे लगा कि यह "फ़ाइल को सहेजें" से संबंधित है।
कारेल क्राल

48

यदि आप इसे SQLServer 2008R2 का उपयोग करते हैं, तो आपको स्क्रिप्ट फ़ील्ड में डेटा के प्रकार सेट करने की आवश्यकता है।

यहां छवि विवरण दर्ज करें


2
2012 में भी लागू होता है।
ओल्डकुरमुडगेन

1
2014 में भी लागू होता है।
NucS

2
यदि आप मेरी तरह भ्रमित हैं, तो "स्क्रिप्ट के प्रकार के डेटा" विकल्प केवल "उन्नत स्क्रिप्ट" के "उन्नत" विकल्प में दिखाई दे रहा है ... विज़ार्ड - आपको यह मुख्य विकल्प संवाद में नहीं मिलता है!
एथरमैन

36

यदि आप SQL Server 2008 R2 को SSMS में ऐसा करने के लिए निर्मित विकल्पों में चला रहे हैं, जैसा कि ऊपर वर्णित marc_s ने थोड़ा बदल दिया है। Script data = trueउसके आरेख में दिखाए अनुसार चयन करने के बजाय , अब एक नया विकल्प है जिसे "Types of data to script""तालिका / दृश्य विकल्प" समूह के ठीक ऊपर कहा जाता है । यहां आप केवल स्क्रिप्ट डेटा, स्कीमा और डेटा या स्कीमा का चयन कर सकते हैं। एक जादू की तरह काम करता है।



6

कमांड लाइन संस्करण की तलाश करने वालों के लिए, Microsoft नेmssql-scripter ऐसा करने के लिए जारी किया :

$ pip install mssql-scripter

# Generate DDL scripts for all database objects and DML scripts (INSERT statements)
# for all tables in the Adventureworks database and save the script files in
# the current directory
$ mssql-scripter -S localhost -d AdventureWorks -U sa --schema-and-data \
                 -f './' --file-per-object

ऐसा प्रतीत होता है कि mssql-trickter अब एक मृत परियोजना है।
एलेक्स सुजुकी

सच है, पिछले वर्ष में कोई विकास नहीं हुआ, लेकिन यह मेरे लिए ठीक काम करता है।
निकोले

3

जैसे ही मैं एक नया v18, लगभग 2019 का उपयोग कर रहा हूं, दूसरों की सहायता के लिए स्क्रीनशॉट अपडेट कर रहा हूं।

राइट क्लिक DB: कार्य> लिपियों उत्पन्न करें

यहां आप कुछ तालिकाओं का चयन कर सकते हैं या सभी के डिफ़ॉल्ट के साथ जा सकते हैं।

यहां आप कुछ तालिकाओं का चयन कर सकते हैं या सभी के डिफ़ॉल्ट के साथ जा सकते हैं। अपनी जरूरतों के लिए मैं सिर्फ एक तालिका का संकेत कर रहा हूं।

इसके बाद, "स्क्रिप्टिंग विकल्प" है, जहां आप आउटपुट फ़ाइल आदि चुन सकते हैं, जैसा कि ऊपर दिए गए कई उत्तरों में है (फिर से, मैं नए, वी 18.4 एसक्यूएल सर्वर मैनेजमेंट स्टूडियो के पुराने उत्तरों को हटा रहा हूं) जो हम वास्तव में चाहते हैं। "उन्नत" बटन के नीचे है। अपने स्वयं के प्रयोजनों के लिए, मुझे केवल डेटा की आवश्यकता है।

फ़ाइल में आउटपुट सहित सामान्य आउटपुट विकल्प। डेटा सहित उन्नत विकल्प!

अंत में, निष्पादन से पहले एक समीक्षा सारांश है। संचालन की रिपोर्ट निष्पादित करने के बाद स्थिति को दिखाया जाता है। समीक्षा सारांश।


2

आप SQL सर्वर प्रबंधन स्टूडियो 2008 के लिए "डेटा स्क्रिप्ट एड-इन" भी देख सकते हैं:

http://www.mssql-vehicle-data.com/SSMS


उनकी विशेषताएं सूची:

  • यह SSMS 2008 में विकसित किया गया था और इस समय (जल्द ही!) 2005 संस्करण पर समर्थित नहीं है!

  • MSSQL और MySQL सिंटैक्स के लिए T-SQL को डेटा जल्दी से निर्यात करें

  • CSV, TXT, XML भी समर्थित हैं! एसक्यूएल की पेशकश करने के लिए पूरी क्षमता, शक्ति और गति का उपयोग करें।

  • आपके लिए स्क्रिप्टिंग का काम करने के लिए एक्सेस या एक्सेल की प्रतीक्षा न करें, जो करने में कई मिनट लग सकते हैं - SQL सर्वर आपके लिए इसे करें और अपने डेटा को निर्यात करने के लिए सभी अनुमान कार्य करें!

  • तेजी से बैकअप, DDL हेरफेर, और अधिक के लिए अपने डेटा आउटपुट को अनुकूलित करें ...

  • जल्दी और कुशलता से अपनी आवश्यकताओं के लिए तालिका के नाम और डेटाबेस स्कीमा बदलें

  • स्तंभ नाम निर्यात करें या केवल नामों के बिना डेटा उत्पन्न करें।

  • आप स्क्रिप्ट के लिए अलग-अलग कॉलम चुन सकते हैं।

  • आप डेटा के उप-सेट (WHERE क्लॉज) चुन सकते हैं।

  • आप डेटा का ऑर्डर चुन सकते हैं (आदेश द्वारा खंड)।

  • उन गंभीर डेटाबेस डिबगिंग ऑपरेशन के लिए महान बैकअप उपयोगिता जिसमें डेटा हेरफेर की आवश्यकता होती है। प्रयोग करते समय डेटा न खोएं। मक्खी पर डेटा हेरफेर!


2

उपरोक्त सभी अच्छा है, लेकिन अगर आपको आवश्यकता है

  1. कई दृश्यों और तालिकाओं के साथ डेटा निर्यात करें
  2. विभिन्न RDBMS के लिए इन्सर्ट स्टेटमेंट बनाएँ
  3. किसी भी RDBMS से किसी भी RDBMS में डेटा माइग्रेट करें

फिर निम्नलिखित चाल एक और एकमात्र तरीका है।

सबसे पहले स्पूल फाइल्स बनाना या सोर्स डीबी कमांड लाइन क्लाइंट से एक्सपोर्ट रिजल्ट सेट बनाना सीखें। दूसरा गंतव्य गंतव्य पर sql कथनों को निष्पादित करना सीखें।

अंत में, स्रोत डेटाबेस पर एक sql स्क्रिप्ट चलाकर गंतव्य डेटाबेस के लिए सम्मिलित विवरण (और किसी भी अन्य कथन) बनाएँ। जैसे

SELECT '-- SET the correct schema' FROM dual;
SELECT 'USE test;' FROM dual;
SELECT '-- DROP TABLE IF EXISTS' FROM dual;
SELECT 'IF OBJECT_ID(''table3'', ''U'') IS NOT NULL DROP TABLE dbo.table3;' FROM dual;
SELECT '-- create the table' FROM dual;
SELECT 'CREATE TABLE table3 (column1 VARCHAR(10), column2 VARCHAR(10));' FROM dual;

SELECT 'INSERT INTO table3 (column1, column2) VALUES (''', table1.column1, ''',''', table2.column2, ''');' FROM table1 JOIN table2 ON table2.COLUMN1 = table1.COLUMN1;

उपरोक्त उदाहरण ओरेकल के डीबी के लिए बनाया गया था जहां टेबल-कम चयन के लिए दोहरे का उपयोग आवश्यक है।

परिणाम सेट में गंतव्य db के लिए स्क्रिप्ट होगी।


1

यहां स्रोत तालिका को पुनरावृत्त करने के लिए कर्सर का उपयोग करके डेटा माइग्रेशन स्क्रिप्ट बनाने का एक उदाहरण है।

SET NOCOUNT ON;  
DECLARE @out nvarchar(max) = ''
DECLARE @row nvarchar(1024)
DECLARE @first int = 1

DECLARE cur CURSOR FOR 
    SELECT '(' + CONVERT(CHAR(1),[Stage]) + ',''' + [Label] + ''')'
    FROM CV_ORDER_STATUS
    ORDER BY [Stage]

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS ON'
PRINT 'GO'

PRINT 'INSERT INTO dbo.CV_ORDER_STATUS ([Stage],[Label]) VALUES';

OPEN cur
FETCH NEXT FROM cur
    INTO @row

WHILE @@FETCH_STATUS = 0
BEGIN
    IF @first = 1
        SET @first = 0
    ELSE
        SET @out = @out + ',' + CHAR(13);

    SET @out = @out + @row

    FETCH NEXT FROM cur into @row
END

CLOSE cur
DEALLOCATE cur

PRINT @out

PRINT 'SET IDENTITY_INSERT dbo.CV_ORDER_STATUS OFF'
PRINT 'GO'

0

बहुत खोज के बाद, यह मेरा सबसे अच्छा शॉट था:

यदि आपके पास बहुत अधिक डेटा है और कॉम्पैक्ट और सुरुचिपूर्ण स्क्रिप्ट की आवश्यकता है, तो इसे आज़माएं: SSMS टूल्स पैक

यह लक्ष्य तालिकाओं में आइटम सम्मिलित करने और लेन-देन को बहुत अच्छी तरह से संभालने के लिए एक संघ का चयन करता है।

स्क्रीनशॉट

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