मेरे पास .bak
SQL Server 2005 डंप से कुछ बड़ी फाइलें हैं।
क्या मैं बिना SQLgreSQL, MySQL, या फ्लैट टेक्स्ट फ़ाइलों के SQL सर्वर का उपयोग किए बिना इन्हें पुनर्स्थापित कर सकता हूं?
एक खुला स्रोत समाधान सबसे उपयोगी होगा।
मेरे पास .bak
SQL Server 2005 डंप से कुछ बड़ी फाइलें हैं।
क्या मैं बिना SQLgreSQL, MySQL, या फ्लैट टेक्स्ट फ़ाइलों के SQL सर्वर का उपयोग किए बिना इन्हें पुनर्स्थापित कर सकता हूं?
एक खुला स्रोत समाधान सबसे उपयोगी होगा।
जवाबों:
यहाँ मेरा सुझाव है:
यदि वीएम के पास बैकअप रखने के लिए पर्याप्त जगह नहीं है लेकिन इसे पुनर्स्थापित करने के लिए पर्याप्त स्थान नहीं है, तो आप रेड-गेट से उसी नाम के उत्पाद के परीक्षण संस्करण का उपयोग करके "वर्चुअल रिस्टोर" कर सकते हैं (जो आपको बातचीत करने की अनुमति देता है। बैकअप फ़ाइल के रूप में अगर यह बहाल किया गया था)। अन्यथा, डेटाबेस को सामान्य तरीके से पुनर्स्थापित करें ।
एक बार डेटाबेस उपलब्ध होने के बाद (या तो सामान्य रीस्टोर या वर्चुअल रिस्टोर के माध्यम से), आप स्कीमा और डेटा के लिए स्क्रिप्ट निम्न तरीके से जनरेट कर सकते हैं:
वैकल्पिक रूप से आप CSV फ़ाइलों या समान डेटा निकालने के लिए bcp उपयोगिता के साथ प्रयास कर सकते हैं , लेकिन आपको यह टेबल-बाय-टेबल करना होगा या कुछ चतुर स्क्रिप्टिंग (PowerShell, T-SQL, C # / SMO, आदि) का उपयोग करना होगा। ) आपके लिए सभी bcp कमांड उत्पन्न करने के लिए। CSV फ़ाइलों में एक बार, यह डेटा को पोस्टग्रेज में बल्क लोड करने के लिए तुच्छ होना चाहिए (लेकिन टेबल बनाने के लिए आपके पास अभी भी कुछ काम होगा)।
एक अंतिम सुझाव के रूप में, यदि .bak फ़ाइल जिन्न नहीं है, और डेटा गोपनीय नहीं है, तो मैं आपके लिए आवश्यक प्रारूप में फ़ाइलों की कोशिश करने और उत्पन्न करने के लिए तैयार हूं। मेरे पास अंतरिक्ष के साथ बहुत सारे विंडोज वीएम हैं, चुनौती मिल रही होगी। बाके फ़ाइल को एक ऐसी जगह जहां मैं इसे पुनः प्राप्त कर सकता हूं - खासकर अगर यह फ़ाइल-साझाकरण सेवाओं के अधिकांश समर्थन से बड़ा है।
दुर्भाग्यवश फ़ाइल के आंतरिक ज्ञान की गहरी जानकारी के बिना .bak फ़ाइल की सामग्री तक पहुँच प्राप्त करने का कोई तरीका नहीं है। मैं यहां एक व्यक्ति के बारे में सोच सकता हूं जो इस जानकारी के लिए निजता हो सकता है, लेकिन मैं यह नहीं कह सकता हूं कि क्या कोई व्यक्ति आपको बताएगा कि यह कैसे करना है
तो, आपको SQL सर्वर इंस्टेंस स्थापित करने की आवश्यकता है। आपको यह सुनिश्चित करने की आवश्यकता है कि यह उदाहरण आपके पोस्टग्रेज सर्वर से बात कर सकता है (pg_hba.conf के साथ फ्रिगिंग) एक बार, आपके पास डेटा को स्थानांतरित करने के लिए कुछ अच्छे रास्ते हैं।
पहला रास्ता Postgres Windows ODBC ड्राइवर स्थापित करना और pg सर्वर से कनेक्शन स्थापित करना होगा। तब आप डेटा माइग्रेशन को स्क्रिप्ट करने के लिए SSIS का उपयोग कर सकते हैं। यदि आप इस मार्ग पर जाने वाले हैं, तो मेरा सुझाव है कि आप डेटाबेस सर्वर स्थापित करते समय SSIS स्थापित करें।
अन्य विकल्प में ODBC ड्राइवर कनेक्शन भी शामिल है, लेकिन आप SQL सर्वर में एक लिंक्ड सर्वर बना सकते हैं और SQL सर्वर पर pg उदाहरण पर आवेषण चला सकते हैं। मैंने इस सटीक प्रश्न का उत्तर यहां दिया है, इसलिए इसे खोजना मुश्किल नहीं होना चाहिए।
संपादित करें
आरोन की टिप्पणी को शामिल करने के लिए, एक बार जब आप SQL सर्वर को चालू करते हैं और चल रहे होते हैं, तो आप विभिन्न तरीकों से फ्लैट फ़ाइलों को डेटा निर्यात कर सकते हैं। यदि आप इस मार्ग को चुनते हैं तो मुझे बताएं और मैं ऐसा करने के लिए कुछ तरीके बताऊंगा
EDIT (2):
जब तक आप अग्रिम में संरचना नहीं बनाना चाहते हैं, तब तक लिंक की गई सर्वर प्रक्रिया सबसे अच्छा तरीका नहीं हो सकती है। यह मेरा पसंदीदा तरीका है, लेकिन मेरे पास आमतौर पर पहले से ही दोनों तरफ की संरचना है।
जो हारून बर्ट्रेंड के जवाब को सबसे अच्छे उत्तर के रूप में छोड़ता है। कृपया ध्यान दें कि डेटा प्रकारों के अलावा ( IDENTITY
बनाम SEQUENCE
, पोस्टग्रेज कुछ भी नहीं जानते हैं NVARCHAR
क्योंकि आपने डेटाबेस पर एन्कोडिंग सेट किया है)। Postgres कुछ भी नहीं जानता CREATE CLUSTERED INDEX
( CLUSTER
आपके लिए काम कर सकता है)। अंत में, चूंकि मैं टिप्पणियों में देखता हूं कि आप स्थानिक डेटा का उपयोग करने जा रहे हैं, postgresql को CREATE SPATIAL INDEX
सिंटैक्स का कुछ भी नहीं पता है । INDEXTYPE
स्थानिक अनुक्रमित बनाने के लिए आपको पोस्टगिस स्थापित करने और कीवर्ड का उपयोग करने की आवश्यकता होगी । अंत में, सुनिश्चित करें कि आप स्कीमा को उचित रूप से संभालेंगे।
कहानी संक्षिप्त में: