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

PostgreSQL डेटाबेस को SQLServer एक में कैसे माइग्रेट करें?

आपको इस सर्वरफॉल्ट पृष्ठ में स्वीकृत उत्तर में कुछ उपयोगी जानकारी प्राप्त करने में सक्षम होना चाहिए:https://serverfault.com/questions/65407/best-tool-to-migrate-a-postgresql-database-to-ms-sql- 2005.

यदि आप डेटा के बिना स्कीमा परिवर्तित करवा सकते हैं, तो आप इस आदेश का उपयोग करके डेटा के चरणों को छोटा करने में सक्षम हो सकते हैं:

pg_dump --data-only --column-inserts your_db_name > data_load_script.sql

यह लोड काफी धीमा होगा, लेकिन --column-inserts विकल्प डेटा की प्रत्येक पंक्ति के लिए संभव सबसे सामान्य INSERT विवरण उत्पन्न करता है और संगत होना चाहिए।

संपादित करें:स्कीमा को परिवर्तित करने के सुझाव इस प्रकार हैं:

मैं स्कीमा को डंप करके शुरू करूंगा, लेकिन स्वामित्व या अनुमतियों से संबंधित किसी भी चीज को हटा दूंगा। यह पर्याप्त होना चाहिए:

pg_dump --schema-only --no-owner --no-privileges your_db_name > schema_create_script.sql

लाइन जोड़ने के लिए इस फ़ाइल को संपादित करें BEGIN TRANSACTION; शुरुआत तक और ROLLBACK TRANSACTION; अंत तक। अब आप इसे लोड कर सकते हैं और इसे SQL सर्वर में एक क्वेरी विंडो में चला सकते हैं। यदि आपको कोई त्रुटि मिलती है, तो सुनिश्चित करें कि आप फ़ाइल के निचले भाग में जाते हैं, रोलबैक स्टेटमेंट को हाइलाइट करें और इसे चलाएं (स्टेटमेंट हाइलाइट होने पर F5 दबाकर)।

मूल रूप से, आपको प्रत्येक त्रुटि को तब तक हल करना होगा जब तक कि स्क्रिप्ट साफ-सुथरी न हो जाए। फिर आप ROLLBACK TRANSACTION को बदल सकते हैं करने के लिए COMMIT TRANSACTION और एक अंतिम बार चलाएं।

दुर्भाग्य से, मैं आपकी मदद नहीं कर सकता कि आप किन त्रुटियों को देख सकते हैं क्योंकि मैं कभी भी PostgreSQL से SQL सर्वर पर नहीं गया, केवल दूसरी तरफ। कुछ चीजें जो मुझे एक मुद्दा होने की उम्मीद है, हालांकि (जाहिर है, एक विस्तृत सूची नहीं):

  • PostgreSQL NOT NULL INTEGER को लिंक करके फ़ील्ड को ऑटो-इन्क्रीमेंट करता है SEQUENCE . के लिए फ़ील्ड एक DEFAULT . का उपयोग करना . SQL सर्वर में, यह एक IDENTITY है कॉलम, लेकिन वे बिल्कुल वही चीज़ नहीं हैं। मुझे यकीन नहीं है कि वे समकक्ष हैं, लेकिन यदि आपका मूल स्कीमा "आईडी" फ़ील्ड से भरा है, तो आप कुछ परेशानी में हो सकते हैं। मुझे नहीं पता कि SQL सर्वर में CREATE SEQUENCE है या नहीं , इसलिए आपको उन्हें हटाना पड़ सकता है।
  • डेटाबेस फ़ंक्शन / संग्रहीत कार्यविधियाँ RDBMS प्लेटफ़ॉर्म के बीच अनुवाद नहीं करती हैं। आपको कोई भी CREATE FUNCTION को निकालना होगा कथन और एल्गोरिदम का मैन्युअल रूप से अनुवाद करें।
  • डेटा फ़ाइल की एन्कोडिंग के बारे में सावधान रहें। मैं एक लिनक्स व्यक्ति हूं, इसलिए मुझे नहीं पता कि विंडोज़ में एन्कोडिंग को कैसे सत्यापित किया जाए, लेकिन आपको यह सुनिश्चित करने की ज़रूरत है कि SQL सर्वर जो अपेक्षा करता है वह वही फ़ाइल है जिसे आप PostgreSQL से आयात कर रहे हैं। pg_dump एक विकल्प है --encoding= जो आपको एक विशिष्ट एन्कोडिंग सेट करने देगा। मुझे याद है कि विंडोज़ यूनिकोड के लिए दो-बाइट, यूटीएफ -16 एन्कोडिंग का उपयोग करता है जहां पोस्टग्रेएसक्यूएल यूटीएफ -8 का उपयोग करता है। मुझे UTF-16 आउटपुट के कारण SQL सर्वर से PostgreSQL पर जाने में कुछ समस्या थी, इसलिए यह शोध के लायक होगा।
  • पोस्टग्रेएसक्यूएल डेटाटाइप TEXT बस एक VARCHAR है अधिकतम लंबाई के बिना। SQL सर्वर में, TEXT है... जटिल (और पदावनत)। आपके मूल स्कीमा में प्रत्येक फ़ील्ड जिसे TEXT . के रूप में घोषित किया गया है उपयुक्त SQL सर्वर डेटा प्रकार के लिए समीक्षा करने की आवश्यकता होगी।
  • SQL सर्वर में UNICODE के लिए अतिरिक्त डेटा प्रकार हैं जानकारी। मैं सुझाव देने के लिए इससे पर्याप्त परिचित नहीं हूँ। मैं सिर्फ इशारा कर रहा हूं कि यह एक मुद्दा हो सकता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका को पोस्टग्रेज करने के लिए स्पार्क डेटाफ्रेम यूपीएसईआरटी

  2. SQL फ़ायरवॉल के साथ अपने PostgreSQL डेटाबेस को साइबर हमले से कैसे बचाएं

  3. PostgreSQL में अतिव्यापी दिनांक सीमाएँ खोजें

  4. किसी तालिका या दृश्य के लिए आश्रित वस्तुओं का पता लगाएं

  5. रेल और पोस्टग्रेएसक्यूएल:भूमिका पोस्टग्रेज मौजूद नहीं है