Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं VARBINARY (MAX) फ़ील्ड वाली तालिका के लिए INSERT स्क्रिप्ट कैसे उत्पन्न कर सकता हूं?

यदि यह एक बार (या शायद ही कभी) करने की बात है, तो आप यहां बताए अनुसार SSMS विज़ार्ड से डेटा को स्क्रिप्टिंग करने का प्रयास कर सकते हैं:

http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx

या, यदि आपको इसे बार-बार करने की आवश्यकता है और इसे स्वचालित करना चाहते हैं, तो आप SQL# SQLCLR लाइब्रेरी (जो मैंने लिखी थी और जबकि इसमें से अधिकांश मुफ्त है, आपको यहां जिस फ़ंक्शन की आवश्यकता है वह नहीं है)। ऐसा करने का कार्य है DB_DumpData और यह INSERT . भी उत्पन्न करता है बयान।

लेकिन फिर से, यदि यह एक बार या कम कार्य है, तो प्रबंधन स्टूडियो में निर्मित डेटा निर्यात विज़ार्ड का प्रयास करें। इससे आपको SQL स्क्रिप्ट बनाने की अनुमति मिलनी चाहिए जिसे आप प्रोडक्शन में चला सकते हैं। मैंने अभी-अभी एक VARBINARY(MAX) वाली टेबल पर इसका परीक्षण किया है 3,365,964 बाइट डेटा वाली फ़ील्ड और जेनरेट स्क्रिप्ट विज़ार्ड ने एक INSERT जेनरेट किया उस एक मान के लिए 6.73 मिलियन वर्णों की संपूर्ण हेक्स स्ट्रिंग के साथ कथन।

अपडेट करें:
ऐसा करने का एक और त्वरित और आसान तरीका जो आपको संपूर्ण INSERT कथन को SQL स्क्रिप्ट में कॉपी/पेस्ट करने की अनुमति देगा और BCP या SSMS निर्यात विज़ार्ड से परेशान नहीं होना पड़ेगा, केवल मान को <में परिवर्तित करना है। कोड>एक्सएमएल . सबसे पहले आप कन्वर्ट करेंगे शब्दावली करने के लिए VARCHAR(MAX) "1" की वैकल्पिक शैली का उपयोग करके जो आपको "0x" से शुरू होने वाली एक हेक्स स्ट्रिंग देता है। एक बार जब आपके पास बाइनरी डेटा की हेक्स स्ट्रिंग हो जाती है तो आप उसे INSERT में जोड़ सकते हैं स्टेटमेंट और वह पूरी बात, जब XML . में कनवर्ट किया जाता है , में संपूर्ण VARBINARY हो सकता है खेत। निम्नलिखित उदाहरण देखें:

DECLARE @Binary VARBINARY(MAX) = CONVERT(VARBINARY(MAX),
                                         REPLICATE(
                                           CONVERT(NVARCHAR(MAX), 'test string'),
                                           100000)
                                        )

SELECT 'INSERT INTO dbo.TableName (ColumnName) VALUES ('+
       CONVERT(VARCHAR(MAX), @Binary, 1) + ')' AS [Insert]
FOR XML RAW;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TABLESAMPLE पंक्तियों की गलत संख्या देता है?

  2. लिंक्ड सर्वर इंसर्ट-सेलेक्ट परफॉर्मेंस

  3. SQL सर्वर में डेटाबेस का नाम कैसे बदलें - SQL सर्वर / TSQL ट्यूटोरियल भाग 26

  4. SQL सर्वर में XML डेटा संग्रहीत करना

  5. SQL सर्वर प्रबंधन स्टूडियो (SSMS) से DDL स्क्रिप्ट कैसे बनाएं (बनाएं) - SQL सर्वर / TSQL ट्यूटोरियल भाग 17