2010-09-14 11 views
9

मुझे पोस्टग्रेज़ 7 से SQL Server 2008 तक डेटाबेस माइग्रेट करने की आवश्यकता है। मैं एसएसआईएस आयात और निर्यात विज़ार्ड से परिचित हूं लेकिन मैं डेटा स्रोत को परिभाषित करने या डेटा प्रदाता को परिभाषित करने के बारे में सोच रहा हूं ।पोस्टग्रेज़ से SQL Server 2008 में माइग्रेट करना

पोस्टग्रेज़ को SQL सर्वर में माइग्रेट करने का सबसे अच्छा तरीका क्या है, और मैं पोस्टग्रेस के लिए डेटा स्रोत/ड्राइवर कैसे परिभाषित करूं?

+0

आप डेटा स्रोत ड्रॉपडाउन से SQL सर्वर मूल क्लाइंट चुनना चाहते हैं। मुझे लगता है कि पोस्टग्रेस को ओडीबीसी प्रदाता की आवश्यकता है लेकिन मुझे नहीं पता कि इसे कैसे कार्यान्वित किया जाए – reach4thelasers

+0

आप वर्तमान में पोस्टग्रेस से कैसे जुड़ रहे हैं? पोस्टग्रेस के लिए अभी तक आपके पास ओडीबीसी डेटा स्रोत नहीं है? हाँ, आपको इसकी ज़रूरत है। – JohnB

+0

प्रश्न 1: पृथ्वी पर क्यों कोई ऐसा करना चाहेगा? ऐसा करना न केवल आर्थिक आत्महत्या है, बल्कि तकनीकी आत्महत्या भी है। –

उत्तर

9

मैं SQL सर्वर आयात और निर्यात विज़ार्ड का उपयोग कर PostgreSQL से SQL सर्वर में आयात करने का प्रयास करने में आपको शुभकामनाएं देता हूं। हालांकि, मैंने कई संदेश बोर्ड धागे पढ़े हैं जिनके साथ इसे काम करने में परेशानी हो रही है। उदाहरण के लिए:

यहाँ सबसे उपयोगी धागा है कि मैं विषय पर पाया है है:


किसी ऐसे व्यक्ति की मदद करने के लिए जो मेरे जैसा ही लक्ष्य प्राप्त करने का प्रयास कर रहा हो। एसक्यूएल सर्वर आयात और निर्यात विज़ार्ड के ड्रॉप डाउन मेनू इसके बजाय "PostgreSQL OLE DB प्रदाता" डेटा स्रोत में चयन का, एक DSN बनाने के लिए चुनें "Odbc के लिए .Net Framework डेटा प्रदाता"

तो फिर तुम किया है और प्रदान करते हैं एक कनेक्शन स्ट्रिंग। ConnectionString मुझे

ड्राइवर = {} PostgreSQL के लिए काम किया के बाद, सर्वर = स्थानीय होस्ट; पोर्ट = 5432; डाटाबेस = TestMasterMap; uid = postgres; पीडब्ल्यूडी =;

डीएसएन बनाने के लिए आपको व्यवस्थापकीय उपकरण डेटा स्रोत (ओडीबीसी) में जाना होगा और उपयोगकर्ता डीएसएन बनाना होगा। एक बार ऐसा करने के बाद आप एसक्यूएल सर्वर आयात और निर्यात विज़ार्ड के डीएसएन टेक्स्ट बॉक्स में डीएसएन नाम की आपूर्ति कर सकते हैं।


एक टिप्पणीकार ने दावा किया कि यह काम किया, लेकिन है कि वह मिल गया "स्मृति समाप्त tuples को पढ़ने के दौरान" बड़ी टेबल पर त्रुटियों। तो 3 मिलियन से अधिक पंक्तियों वाले तालिकाओं के लिए, उन्हें आयात को 3 मिलियन पंक्ति भागों में तोड़ना पड़ा।

इसके अलावा, उस धागे में link to the native .NET provider for PostgreSQL है।

व्यक्तिगत रूप से, अगर यह कुछ है कि मैं केवल एक बार करना था, और अगर मैं स्कीमा और काफी अच्छी तरह से समझ में आ डेटा, मैं कोशिश करेगा है: PostgreSQL से

  1. निर्यात डेटा के रूप में फ्लैट फ़ाइलें
  2. एसक्यूएल सर्वर में स्कीमा बनाने
  3. (पीकेएस या बाधाओं के बिना) फ्लैट फ़ाइलें
  4. तो पीकेएस बना सकते हैं और आवश्यक बाधाओं
  5. आयात करने के लिए लघु उद्योगों आयात/निर्यात विज़ार्ड का उपयोग

यह आप कम समय लग सकता है दिन के लिए लघु उद्योगों आयात/निर्यात विज़ार्ड और PostgreSQL के साथ खिलवाड़ से ऊपर करने के लिए (लेकिन यह अच्छा होगा अगर उन उपकरणों से काम किया!)

+0

मैंने बस अपनी टेबल को एसएसवी फाइलों के रूप में SQL सर्वर 2005 में आयात करने का प्रयास किया और देखा कि सीएसवी आयात नरक के रूप में छोटी है। मैं इसे विभिन्न मुद्दों के कारण काम नहीं कर सका। PostgreSQL ने उसी तरह की फ़ाइलों को बिना किसी समस्या के आयात किया। – juzzlin

+0

मुझे सीएसवी को डेटा निर्यात करने का विचार पसंद है। एसएसआईएस के साथ काम करना सीधे मेरे लिए अच्छा काम नहीं करता है, विशेष रूप से क्योंकि जिस डेटा को मैं निर्यात करना चाहता था वह विचारों में व्यवस्थित किया गया था, जिसे ओडीबीसी चालक (या एसएसआईएस स्वयं) नहीं लगता है। – Andre

1

जैसा कि मैंने टिप्पणी समाप्त ऊपर जवाब, मैंने SQL WorkbenchJ कोशिश करने का विचार किया; इसमें एक डाटापंप सुविधा है जो मेरे लिए बहुत अच्छी तरह से काम करती है। मैं अपने PostgreSQL डेटाबेस से डेटा को SQL सर्वर उदाहरण में निर्यात करने में कामयाब रहा।

जो बैच मोड (खोल के माध्यम से) में इसे चलाने के लिए चाहते हैं, यहां यह कैसे करें: Google Groups Thread। चर्चा पर उल्लिखित WbCopy कमांड वास्तव में कहीं भी दस्तावेज नहीं किया गया है, लेकिन आप डेटापंप इंटरफेस के माध्यम से एक उत्पन्न कर सकते हैं और फिर जो भी आपको चाहिए उसे बदल सकते हैं।

1

मुझे PostgreSQL से टेबल आयात करने के लिए SQL Server 2008 R2 में आयात विज़ार्ड का उपयोग करने में समस्याएं आ रही थीं। मेरे पास PostgreSQL ODBC ड्राइवर स्थापित था, इसलिए आयात विज़ार्ड में डेटा स्रोत के लिए मैंने "ओडीबीसी के लिए नेट फ्रेमवर्क डेटा प्रदाता" चुना और मेरे PostgreSQL डेटाबेस के लिए डीएसएन नाम प्रदान किया। विज़ार्ड टेबल को ठीक मिला, लेकिन जब मैं आयात करने के लिए गया तो मुझे त्रुटि मिली

स्रोत और गंतव्य डेटा के लिए कॉलम जानकारी पुनर्प्राप्त नहीं की जा सकी।

"बिलिंग" -> [dbo] [बिलिंग]:।

- स्तंभ -1 नहीं मिल सकी।

मुझे माइक्रोसॉफ्ट ब्लॉग पोस्ट here में समाधान मिला। स्पष्ट रूप से समस्या यह है कि कॉलम मेटाडेटा की रिपोर्ट करते समय विभिन्न ओडीबीसी ड्राइवर अलग-अलग विशेषता नामों का उपयोग करते हैं। \ Program Files \ Microsoft SQL सर्वर \ 100 \ डीटीएस \ ProviderDescriptors \ ProviderDescriptors.xml

में: काम करने के लिए मैं "ProviderDescriptors.xml" फ़ाइल, जिस पर

सी स्थित था संपादित करने के लिए किया था आयात प्राप्त करने के लिए ...

<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection"> 

... तत्व मैं से गुण बदलना पड़ा ...

<dtm:ColumnSchemaAttributes 
    NameColumnName = "COLUMN_NAME" 
    OrdinalPositionColumnName="ORDINAL_POSITION" 
    DataTypeColumnName = "TYPE_NAME" 
    MaximumLengthColumnName = "COLUMN_SIZE" 
    NumericPrecisionColumnName = "COLUMN_SIZE" 
    NumericScaleColumnName = "DECIMAL_DIGITS" 
    NullableColumnName="NULLABLE" 
    NumberOfColumnRestrictions="4" 
/> 

... करने के लिए ...

<dtm:ColumnSchemaAttributes 
    NameColumnName = "COLUMN_NAME" 
    OrdinalPositionColumnName="ORDINAL_POSITION" 
    DataTypeColumnName = "TYPE_NAME" 
    MaximumLengthColumnName = "LENGTH" 
    NumericPrecisionColumnName = "PRECISION" 
    NumericScaleColumnName = "SCALE" 
    NullableColumnName="NULLABLE" 
    NumberOfColumnRestrictions="4" 
/> 

है कि, मैं, "LENGTH", "PRECISION", और "SCALE" को MaximumLengthColumnName, NumericPrecisionColumnName, और NumericScaleColumnName विशेषता मान बदलाव करने क्रमशः था।

एक बार यह परिवर्तन पोस्टग्रेएसक्यूएल से SQL सर्वर में आयात को सफलतापूर्वक चलाया गया।

+0

अंतर्दृष्टि के लिए धन्यवाद !! मैंने इसे काम करने के लिए कभी नहीं मिला! – reach4thelasers

संबंधित मुद्दे