मेरे पास एक डेटाबेस है जिसे फू कहा जाता है और एक डेटाबेस जिसे बार कहा जाता है। मेरे पास foo में एक तालिका है जिसे tblFoobar कहा जाता है जिसे मैं डेटाबेस फू से डेटाबेस बार में (डेटा और सभी) स्थानांतरित करना चाहता हूं। यह करने के लिए SQL कथन क्या है?
मेरे पास एक डेटाबेस है जिसे फू कहा जाता है और एक डेटाबेस जिसे बार कहा जाता है। मेरे पास foo में एक तालिका है जिसे tblFoobar कहा जाता है जिसे मैं डेटाबेस फू से डेटाबेस बार में (डेटा और सभी) स्थानांतरित करना चाहता हूं। यह करने के लिए SQL कथन क्या है?
जवाबों:
SQL सर्वर पर? और एक ही डेटाबेस सर्वर पर? नामकरण तीन भाग का उपयोग करें।
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
यह सिर्फ डेटा को स्थानांतरित करता है। यदि आप तालिका परिभाषा (और अन्य विशेषताएँ जैसे अनुमतियाँ और अनुक्रमणिका) को स्थानांतरित करना चाहते हैं, तो आपको कुछ और करना होगा।
SQL सर्वर प्रबंधन स्टूडियो का "आयात डेटा" कार्य (DB नाम पर राइट-क्लिक करें, तो कार्य) आपके लिए यह सबसे अधिक करेगा। उस डेटाबेस से चलाएँ, जिसमें आप डेटा को कॉपी करना चाहते हैं।
यदि टेबल मौजूद नहीं है, तो यह आपके लिए उन्हें बनाएगा, लेकिन आपको संभवतः किसी भी अनुक्रमित और ऐसे को फिर से बनाना होगा। यदि टेबल मौजूद हैं, तो यह नए डेटा को डिफ़ॉल्ट रूप से जोड़ देगा लेकिन आप इसे समायोजित कर सकते हैं (मैपिंग संपादित कर सकते हैं) ताकि यह मौजूदा डेटा को हटा देगा।
मैं हर समय इसका उपयोग करता हूं और यह काफी अच्छी तरह से काम करता है।
WHERE
आयात डेटा कार्य का उपयोग करके किसी शर्त को निर्दिष्ट करना संभव है ? मुझे ऐसा करने का तरीका नहीं मिल रहा था।
यह काम करना चाहिए:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
यह कमी, चूक या सूचकांक की नकल नहीं करेगा । बनाई गई तालिका में क्लस्टर अनुक्रमणिका नहीं होगी ।
वैकल्पिक रूप से आप कर सकते हैं:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
यदि आपकी गंतव्य तालिका मौजूद है और खाली है।
INSERT INTO...
) ने मेरे लिए ओरेकल में काम किया।
यदि यह केवल एक टेबल है तो आपको बस इतना करना है
एक बात जिस पर आपको विचार करना होगा वह है अन्य अपडेट जैसे कि भविष्य में अन्य वस्तुओं को माइग्रेट करना। ध्यान दें कि आपके स्रोत और गंतव्य तालिकाओं में समान नाम नहीं है। इसका मतलब यह है कि अगर आपको ऑब्जेक्ट्स जैसे विचार, संग्रहीत कार्यविधियाँ और अन्य निर्भर हैं तो आपको भी बदलाव करने होंगे।
एक या कई वस्तुओं को आप किसी भी मुद्दे पर मैन्युअल रूप से w / o जा सकते हैं। हालाँकि, जब कुछ अपडेट्स से अधिक होते हैं, तो 3 पार्टी तुलना उपकरण बहुत काम आते हैं। अभी मैं स्कीमा माइग्रेशन के लिए ApexSQL Diff का उपयोग कर रहा हूं लेकिन आप किसी अन्य टूल के साथ गलत नहीं कर सकते।
स्क्रिप्ट create table
प्रबंधन स्टूडियो में, कि स्क्रिप्ट पट्टी में तालिका बनाने के लिए चलाते हैं। (ऑब्जेक्ट एक्सप्लोरर में राइट क्लिक टेबल, स्क्रिप्ट टेबल के रूप में, बनाएं ...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
SET IDENTITY_INSERT TblName ON
उस मामले में भी करना होगा ।
SQL स्क्रिप्ट के निर्माण में मदद के लिए आप SQL सर्वर स्क्रिप्ट्स विज़ार्ड जनरेट का उपयोग भी कर सकते हैं जो निम्न कार्य कर सकता है:
यहां दिखाए गए स्क्रीन शॉट्स के साथ SQL सर्वर 2008 के लिए अच्छा उदाहरण वर्कफ़्लो ।
आप इस तरह से जा सकते हैं: (एक सामान्य उदाहरण)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
इसके अलावा अगर आपको कॉलम के नाम उत्पन्न करने के साथ-साथ इंसर्ट क्लॉज लगाने की जरूरत है, तो उपयोग करें:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
परिणाम को कॉपी करें और अपने टेबल कॉलम नामों का प्रतिनिधित्व करने के लिए क्वेरी विंडो में पेस्ट करें और यहां तक कि पहचान कॉलम को भी बाहर कर देगा:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
याद रखें कि पंक्तियों को कॉपी करने के लिए स्क्रिप्ट काम करेगी यदि डेटाबेस उसी स्थान के हैं।
आप यह कोशिश कर सकते हैं।
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
सर्वर नाम वैकल्पिक है यदि दोनों DB एक ही सर्वर में है।
डेटा कॉपी करें
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details