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

उन्नत एसक्यूएल:टी-एसक्यूएल इंसर्ट स्टेटमेंट की विविधताएं और विभिन्न उपयोग के मामले

अपने पिछले लेख में, मैंने प्रदर्शित किया था:

  1. SQL तालिका में तालिका-मान फ़ंक्शन का आउटपुट सम्मिलित करें।
  2. रिमोट डेटाबेस सर्वर पर बनाए गए टेबल-वैल्यू फ़ंक्शन का आउटपुट डालें।

इस लेख में, मैं प्रदर्शित करने जा रहा हूँ:

  1. एक अलग स्कीमा में बनाई गई दो तालिकाओं के बीच डेटा कॉपी करें।
  2. एक ही सर्वर पर अलग-अलग डेटाबेस में बनाए गए दो तालिकाओं के बीच डेटा कॉपी करें।
  3. बनाई गई दो तालिकाओं के बीच डेटा कॉपी करें, अलग-अलग डेटाबेस में अलग-अलग सर्वर रहता है (क्रॉस सर्वर क्वेरी)

भिन्न स्कीमा में बनाई गई दो तालिकाओं के बीच डेटा स्थानांतरित करें।

एक अलग स्कीमा में बनाई गई दो तालिकाओं के बीच डेटा कॉपी करने के लिए, हमें निम्नलिखित सिंटैक्स का उपयोग करना चाहिए:

 में डालें। (COLUMN1, COLUMN2, COLUMN3 ..)  से COLUMN1, COLUMN2, COLUMN3 चुनें। 

प्रदर्शन के लिए, मैं WideWorldImportors . का उपयोग करने जा रहा हूं डेटाबेस। मैं [एप्लिकेशन] से सभी रिकॉर्ड कॉपी करना चाहता हूं। [लोग] [dbo] के लिए तालिका।[EmpleesWithLogonName] तालिका जिसमें LOGONNAME "कोई लॉगऑन नहीं . के बराबर है । "

सबसे पहले, आइए [एप्लिकेशन] से डेटा की समीक्षा करें।[लोग] टेबल। ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:

आवेदन से
चुनें 

निम्न आउटपुट का स्क्रीनशॉट है:

अब, चलिए [dbo] बनाते हैं।[EmployeesWithLogonName] टेबल। ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:

बिना लॉगऑननाम के टेबल कर्मचारी बनाएं ( [आईडी] INT पहचान(1, 1), [FULL_NAME] VARCHAR(500), [PREFERRED_NAME] VARCHAR(500), [SEARCH_NAME] NVARCHAR(MAX), [LOGON_NAME] VARCHAR(250), [PHONE_NUMBER] VARCHAR(50), [FAX_NUMBER] VARCHAR(100), [EMAIL_ADDRESS] NVARCHAR(250))

आइए अब हम [एप्लिकेशन] से रिकॉर्ड कॉपी करें।[लोग] करने के लिए [dbo]। [कर्मचारियों के बिना LogonName] . ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:

[DBO] में डालें। [SEARCHNAME], [LOGONNAME], [PHONENUMBER], [FAXNUMBER], [EMAILADDRESS] आवेदन से। वे लोग जहां LOGONNAME ='कोई लॉगऑन नहीं'

डेटा डालने के बाद, यह सत्यापित करने के लिए कि डेटा कॉपी किया गया है, निम्न क्वेरी निष्पादित करें।

चुनें* बिना LOGONNAME के ​​कर्मचारियों से

निम्न आउटपुट है:

किसी भिन्न डेटाबेस में बनाई गई दो तालिकाओं के बीच डेटा कॉपी करें

जैसा कि मैंने ऊपर बताया, हम दो अलग-अलग स्कीमा में बनाई गई तालिकाओं के बीच डेटा कॉपी कर सकते हैं। इसी तरह, हम दो अलग-अलग डेटाबेस में बनाई गई दो तालिकाओं के बीच डेटा कॉपी कर सकते हैं। दो डेटाबेस के बीच डेटा कॉपी करने के लिए, उपयोगकर्ता के पास "db_datareader . होना चाहिए स्रोत डेटाबेस पर अनुमति और “db_datawriter "गंतव्य डेटाबेस पर।

निम्नलिखित वाक्य रचना है:

 में डालें। 

अब प्रदर्शित करने के लिए, मैंने "एचआर" नामक एक नया डेटाबेस बनाया है। डेटाबेस बनाने के लिए, निम्न कमांड निष्पादित करें।

डेटाबेस एचआर बनाएं

अब मैं कर्मचारियों के बिना लॉगऑननाम का डेटा कॉपी करना चाहता हूं WideWorldImportors . में बनाई गई तालिका "कर्मचारियों . के लिए डेटाबेस HR . में बनाई गई तालिका डेटाबेस।

सबसे पहले, "कर्मचारी . नाम की एक तालिका बनाते हैं " HR . में डेटाबेस। ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:

यूज एचआर गो क्रिएट टेबल एम्प्लॉयीज ( [आईडी] इंट आइडेंटिटी(1, 1), [FULL_NAME] VARCHAR(500), [PREFERRED_NAME] VARCHAR(500), [SEARCH_NAME] NVARCHAR(MAX), [LOGON_NAME] VARCHAR( 250), [PHONE_NUMBER] VARCHAR (50), [FAX_NUMBER] VARCHAR (100), [EMAIL_ADDRESS] NVARCHAR (250) )

अब “कर्मचारियों के बिना लॉगऑननाम . से डेटा कॉपी करने के लिए “कर्मचारियों . के लिए तालिका “तालिका, आइए हम निम्नलिखित क्वेरी को निष्पादित करें:

HR.DBO.EMPLOYEES में सम्मिलित करें ([FULL_NAME], [PREFERRED_NAME], [SEARCH_NAME], [LOGON_NAME], [PHONE_NUMBER], [FAX_NUMBER], [EMAIL_ADDRESS]) चुनें FULL_NAME, PREFER_NAME, LOGER, LOGER_NAME, LOGER FAX_NUMBER, WIDEWORLDIMPORTERS से EMAIL_ADDRESS.DBO.EMPLOYEESWITHOUTLOGONNAME

डेटा डालने के बाद, यह सत्यापित करने के लिए कि डेटा कॉपी किया गया है, निम्न क्वेरी निष्पादित करें।

HR.DBO.EMPLOYEES से * चुनें

निम्न आउटपुट है:

विभिन्न सर्वरों पर अलग-अलग डेटाबेस में बनाए गए दो तालिकाओं के बीच डेटा कॉपी करें

अब, इसी तरह, हम दो अलग-अलग सर्वरों पर बनाए गए दो अलग-अलग डेटाबेस पर बनाए गए दो तालिकाओं के बीच डेटा की प्रतिलिपि बना सकते हैं। यह लिंक किए गए सर्वर का उपयोग करके किया जा सकता है या OPENROWSET कीवर्ड।

लिंक्ड सर्वर का उपयोग करके दूरस्थ सर्वर पर बनाए गए SQL डेटाबेस को जोड़ने के लिए सिंटैक्स निम्नलिखित है।

 में सम्मिलित करें।> 

इस डेमो में, मैं कर्मचारी . का डेटा कॉपी करने जा रहा हूं Azure क्लाउड पर बनाए गए SQL डेटाबेस में कर्मचारी डेटाबेस पर बनाई गई तालिका। ऐसा करने के लिए, सबसे पहले Azure SQL इंस्टेंस पर एक डेटाबेस बनाएं। मैंने "companyemployees.database.windows.net. नाम का एक SQL सर्वर संसाधन पूल बनाया है। "

अब Azure डेटाबेस इंस्टेंस पर HR डेटाबेस बनाने के लिए, SQL सर्वर प्रबंधन स्टूडियो खोलें। सर्वर नाम टेक्स्ट बॉक्स में, "companyemployees.database.windows.net" चुनें। हम SQL इंस्टेंस को जोड़ने के लिए SQL सर्वर प्रमाणीकरण का उपयोग करेंगे। ऐसा करने के लिए, प्रमाणीकरण प्रकार ड्रॉप-डाउन बॉक्स में "SQL सर्वर प्रमाणीकरण" चुनें। उपयुक्त उपयोगकर्ता नाम और पासवर्ड प्रदान करें और कनेक्ट पर क्लिक करें। निम्न स्क्रीनशॉट देखें।

अब “Cloud_HR_DB . बनाने के लिए ” डेटाबेस, Ctrl+N दबाएं क्वेरी संपादक विंडो खोलने और निम्न आदेश निष्पादित करने के लिए।

डेटाबेस CLOUD_HR_DB GO बनाएं

निम्न चित्र देखें।

एक बार डेटाबेस बन जाने के बाद, "cकर्मचारी . बनाने के लिए निम्न क्वेरी निष्पादित करें Cloud_HR_DB . पर तालिका डेटाबेस। ऐसा करने के लिए, HR . में निम्न क्वेरी निष्पादित करें डेटाबेस।

टेबल कर्मचारी बनाएं ( [आईडी] INT पहचान(1, 1), [FULL_NAME] VARCHAR(500), [PREFERRED_NAME] VARCHAR(500), [SEARCH_NAME] NVARCHAR(MAX), [LOGON_NAME] VARCHAR(250), [PHONE_NUMBER] VARCHAR(50), [FAX_NUMBER] VARCHAR(100), [EMAIL_ADDRESS] NVARCHAR(250))

एक बार डेटाबेस और टेबल बन जाने के बाद, हमें क्रॉस-सर्वर क्वेरी करने के लिए एक लिंक्ड सर्वर बनाने की आवश्यकता होती है। स्थानीय SQL सर्वर आवृत्ति और Azure SQL सर्वर आवृत्ति के बीच एक लिंक सर्वर बनाने के लिए, स्थानीय SQL सर्वर आवृत्ति पर निम्न आदेश निष्पादित करें।

उपयोग [मास्टर] GO EXEC MASTER.DBO.SP_ADDLINKEDSERVER @SERVER =N'AZURE_SQL_SERVER', @SRVPRODUCT=N'', @PROVIDER=N'SQLNCLI', @DATASRC=N'COMPANYEMPLOYEES.DATABASE.WINDOWS.WINDOWS.WINDOWS. , @CATALOG=N'CLOUD_HR_DB' /* सुरक्षा कारणों से लिंक किए गए सर्वर रिमोट लॉगिन पासवर्ड को ####### */ EXEC MASTER.DBO.SP_ADDLINKEDSRVLOGIN @RMTSRVNAME=N'AZURE_ के साथ बदल दिया गया है। 'FALSE', @LOCALLOGIN=NULL, @RMTUSER=N'NISARGUPADHYAY', @RMTPASWORD='########' GO EXEC MASTER.DBO.SP_SERVEROPTION @SERVER=N'AZURE_SQL_SERVER', @OPTNAME=N' डेटा एक्सेस', @OPTVALUE=N'TRUE' GO EXEC MASTER.DBO.SP_SERVEROPTION @SERVER=N'AZURE_SQL_SERVER', @OPTNAME=N'RPC', @OPTVALUE=N'TRUE' GO EXEC MASTER.DBO.SP_SERVEROPTION @SERVEROPTION =N'AZURE_SQL_SERVER', @OPTNAME=N'RPC OUT', @OPTVALUE=N'TRUE' GO EXEC MASTER.DBO.SP_SERVEROPTION @SERVER=N'AZURE_SQL_SERVER', @OPTNAME=N'CONNECT TIMEOUT', @OPTVALUE=N '0' जाओ EXEC MASTER.DBO.SP_SERVEROPTION @SERVER=N'AZURE_SQL_SERVER', @OPTNAME=N'LAZY SC हेमा सत्यापन', @OPTVALUE=N'FALSE' GO EXEC MASTER.DBO.SP_SERVEROPTION @SERVER=N'AZURE_SQL_SERVER', @OPTNAME=N'QUERY TIMEOUT', @OPTVALUE=N'0' GO EXEC MASTER.VEROPTION.SP_SERVER SERVER=N'AZURE_SQL_SERVER', @OPTNAME=N'REMOTE PROC TRANSACTION PROMOTION', @OPTVALUE=N'TRUE' GO

एक बार लिंक किया गया सर्वर बन जाने के बाद, कर्मचारियों . का डेटा निर्यात करने देता है तालिका, SQL सर्वर के स्थानीय उदाहरण पर cकर्मचारियों . के लिए बनाई गई है Azure SQL सर्वर इंस्टेंस पर बनाई गई तालिका। ऐसा करने के लिए, स्थानीय SQL सर्वर आवृत्ति पर निम्न क्वेरी निष्पादित करें:

[AZURE_SQL_SERVER].Cloud_HR_DB.DBO.cEMPLOYEES ([FULL_NAME], [PREFERRED_NAME], [SEARCH_NAME], [LOGON_NAME], [PHONE_NUMBER], [FAX_NUMBER], [EMAIL_NAME, PREFRED_NAME], [EMAIL_SELECT_ADDRESS]) में डालें LOGON_NAME, PHONE_NUMBER, FAX_NUMBER, EMAIL_ADDRESS फ्रॉम HR..EMPLOYEES

एक बार जब डेटा को स्थानीय इंस्टेंस से Azure इंस्टेंस में निर्यात किया जाता है, तो यह सत्यापित करने के लिए निम्न क्वेरी निष्पादित करें कि डेटा कॉपी किया गया है।

चुनें * [AZURE_SQL_SERVER] से।Cloud_HR_DB.DBO.cEMPLOYEES

निम्न आउटपुट है:

हम लिंक्ड सर्वर का उपयोग किए बिना भी डेटा को रिमोट सर्वर पर कॉपी कर सकते हैं। ऐसा करने के लिए, हमें OPENROWSET कीवर्ड का उपयोग करना चाहिए। OPENROWSET OLEDB का उपयोग करके दूरस्थ डेटा स्रोत को जोड़ने और एक्सेस करने के लिए एक तदर्थ विधि है। OPENROWSET को और पढ़ने के लिए, OPENROWSET के Microsoft दस्तावेज़ देखें।

अब निम्नलिखित उदाहरण में, मैं cकर्मचारियों . से डेटा कॉपी करूंगा Cloud_HR_DB पर बनाई गई तालिका कर्मचारियों . को स्थानीय उदाहरण पर बनाया गया डेटाबेस। हम केवल उन्हीं अभिलेखों की प्रतिलिपि करेंगे जिनमें ईमेल_पता . है पसंद करें" contoso.com. "

अब डेटा कॉपी करने के लिए, “ContosoEmployees . नाम की एक टेबल बनाएं "HR . में " डेटाबेस। ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:

तालिका बनाएं [डीबीओ]। [SEARCH_NAME] [NVARCHAR](MAX) NULL, [LOGON_NAME] [VARCHAR](250) NULL, [PHONE_NUMBER] [VARCHAR](50) NULL, [FAX_NUMBER] [VARCHAR](100) NULL, [EMAIL_ADDRESS] [NVARCHAR] (250) NULL ) जाओ

अब OPENROWSET का उपयोग करके डेटा सम्मिलित करने के लिए, हमें “तदर्थ वितरित क्वेरी को सक्षम करने की आवश्यकता है। " अग्रिम विकल्प। ऐसा करने के लिए, निम्न आदेश निष्पादित करें।

EXEC SP_CONFIGURE 'उन्नत विकल्प दिखाएं',1OVERRIDEEXEC SP_CONFIGURE 'AD HOC DISTRIBUTED QUERIES' के साथ RECONFIGURE,1ओवरराइड के साथ RECONFIGURE

अब cEmployees . से डेटा कॉपी करने के लिए Cloud_HR_DB (Azure Instance) . की तालिका "Contosoकर्मचारियों . के लिए डेटाबेस "कर्मचारियों . में "डेटाबेस (स्थानीय उदाहरण), स्थानीय सर्वर पर निम्न क्वेरी निष्पादित करें:

मानव संसाधन का उपयोग CONTOSOEMPLOYEES में करें ([FULL_NAME], [PREFERRED_NAME], [SEARCH_NAME], [LOGON_NAME], [PHONE_NUMBER], [FAX_NUMBER], [EMAIL_ADDRESS]) चुनें * OPENROWSET'('SQLNCERLI=SERLI) से चुनें। COMPANYEMPLOYEES.DATABASE.WINDOWS.NET,1433;DATABASE=CLOUD_HR_DB;UID=NISARGUPADHYAY;[email protected]', 'SELECT FULL_NAME, PREFERRED_NAME, SEARCH_NAME, LOGON_NAME, PHONE_NUMBER, , , LOGON_NAME, PHONE_NUMBER, , , ,,,,,,, ,,,,,,,,, और,,, और, नहीं है। COM%''')A

एक बार जब डेटा को स्थानीय इंस्टेंस से Azure इंस्टेंस में निर्यात किया जाता है, तो यह सत्यापित करने के लिए निम्न क्वेरी निष्पादित करें कि डेटा कॉपी किया गया है।

CONTOSOEMPLOYEES से FULL_NAME, PREFERRED_NAME, SEARCH_NAME, LOGON_NAME, PHONE_NUMBER, FAX_NUMBER, EMAIL_ADDRESS चुनें

निम्न आउटपुट है:

इस लेख में मैंने बताया है कि कैसे:

  1. एक अलग स्कीमा में बनाई गई दो तालिकाओं के बीच डेटा कॉपी करें।
  2. एक ही सर्वर पर अलग-अलग डेटाबेस में बनाई गई दो तालिकाओं के बीच डेटा कॉपी करें।
  3. विभिन्न सर्वर (क्रॉस सर्वर क्वेरी) के विभिन्न डेटाबेस में बनाए गए दो तालिकाओं के बीच डेटा कॉपी करें।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PyQt के साथ SQL डेटाबेस को संभालना:मूल बातें

  2. OGG-01224 पता पहले से प्रयोग में है

  3. पार्स पैरामीटर डिफ़ॉल्ट मान PowerShell का उपयोग कर - भाग 1

  4. अपना खुद का क्लाउड लाएं (BYOC) बनाम स्केलग्रिड पर समर्पित होस्टिंग

  5. SQL में इनर जॉइन और आउटर जॉइन के बीच अंतर