MySQL डेटाबेस को PostgreSQL में कैसे बदलें?


20

MySQL डेटाबेस को PostgreSQL में परिवर्तित करने के लिए कोई कमांड लाइन टूल है? मैं यह भी जानना चाहूंगा कि क्या सामान्य mysqldumpकमांड का उपयोग करके डेटाबेस को बदलने का कोई तरीका है ।


1
यहां शुरू करें: wiki.postgresql.org/wiki/…
a_horse_with_no_name

4
जब भी मैं यह देखता हूं, मैं खुशी के आंसू रोता हूं।
rfusca


यह आसानी से इस पूरी साइट पर सबसे उपयोगी प्रश्नों में से एक है।
इवान कैरोल

जवाबों:


13

आपने कोशिश की है:

mysqldump --compatible=postgresql dbname > export.sql

फिर उद्धरणों से बचने के लिए ऐसा करें

sed "s/\\\'/\'\'/g" export.sql > export1.sql

कुछ अधिक मालिश की आवश्यकता हो सकती है ताकि mysqldump डोको को अधिक बारीकी से देखें।


2
मैंने आपके द्वारा पहले से दी गई विधि की कोशिश की है, लेकिन यह तब त्रुटि दे रहा है जब पोस्टग्रेसल में बहाल किया गया
मुगिल

2
@Mughil क्या त्रुटि है?
जानूस ट्रॉल्सन

4
5 साल और किसी का mysqldumpअभी तय नहीं है। syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
सेस टिम्मरमैन

1
Dev.mysql.com/doc/refman/8.0/en/… के अनुसार इसके लिए केवल स्वीकृत मूल्य --compatibleहैansi
phunehehe

7

यहाँ कुछ खुले स्रोत उपकरण हैं, जो बहुत मददगार हो सकते हैं:

FromMySqlToPostgreSql एक फीचर-पहुंच उपकरण है और इसका उपयोग करना बहुत आसान है।
यह डेटा-प्रकारों को मैप करता है, माइग्रेशन की कमी, इंडेक्स, पीके और एफके ठीक उसी तरह से जैसे वे आपके MySQL db में थे।
हुड के तहत यह PostgreSQL COPY का उपयोग करता है, इसलिए डेटा ट्रांसफर बहुत तेज है।
FromMySqlToPostgreSql PHP में लिखा (> = 5.4)।

pgloader   COPY कमांड का उपयोग करके PostgreSQL के लिए डेटा लोड करने का उपकरण है। केवल उपयोग करने पर इसका मुख्य लाभ

COPY
या
\copy
, और एक विदेशी डेटा आवरण का उपयोग करने पर, इसका लेन-देन व्यवहार है, जहां pgloader अस्वीकृत डेटा की एक अलग फ़ाइल रखेगा, लेकिन अपने डेटाबेस में अच्छे डेटा की प्रतिलिपि बनाने का प्रयास जारी रखें। डिफ़ॉल्ट PostgreSQL व्यवहार ट्रांजेक्शनल है, जिसका अर्थ है कि इनपुट डेटा (फ़ाइल या रिमोट डेटाबेस) में कोई भी गलत लाइन टेबल के लिए पूरे बल्क लोड को रोक देगी। pgloader भी डेटा पुनरावृत्ति को लागू करता है, इसका एक विशिष्ट उदाहरण Mygc datestamps का परिवर्तन 0000-00-00 और 0000-00-00 00:00:00 PostgreSQL में किया जा रहा है
NULL
मूल्य (क्योंकि हमारे कैलेंडर में कभी एक वर्ष शून्य नहीं था)।
pgloader को LISP में लिखा गया है और स्रोत कोड के रूप में वितरित किया गया है, इसलिए आपको उपयोग करने से पहले इसे संकलित करने की आवश्यकता है।

आशा है इससे आपकी मदद होगी...


1
pgloader को पोस्टग्रे डॉक्स पर माइग्रेशन टूल की भी सिफारिश की जाती है, इसलिए मैं कहूंगा कि यह सबसे अच्छा विकल्प है। मैंने इसे 50+ तालिकाओं के साथ एक काफी छोटे DB पर सक्सेस के साथ इस्तेमाल किया है, एक आकर्षण की तरह काम किया है।
कैपज

3

वास्तव में एक फ्री माइग्रेशन टूल है जो कि प्रयोग करने में काफी आसान है, जो कि एंटरप्राइज़डीबी द्वारा स्वयं विकसित किया गया है। इसे StackBuilder: माइग्रेशन टूलकिट के माध्यम से इंस्टॉल किया जा सकता है


3

मैं हाल ही में DBConvert से एक गैर-मुक्त उपकरण का उपयोग करने के लिए एक अभिगम डेटाबेस को पोस्टग्रेज करने के लिए परिवर्तित करता हूं , और मैंने इसे मुफ्त में मज़बूती से करने की कोशिश में जितना समय बर्बाद किया है, उसकी तुलना में यह अच्छी तरह से लायक है। MySQL के लिए एक समान टूल बेचें <-> पोस्टग्रेज , जिसका मैंने उपयोग नहीं किया है, लेकिन अच्छी तरह से विचार करने के लायक हो सकता है जब तक कि आप केवल कमांड लाइन टूल में रुचि नहीं लेते।

मामले में आप सोच रहे हैं कि मैं उनके साथ किसी भी तरह से संबद्ध नहीं हूं :-)


3

आप उदाहरण के लिए EnterpriseDB माइग्रेशन विज़ार्ड का उपयोग कर सकते हैं।

यह OracleDB को आसानी से माइग्रेट कर सकता है। लेकिन मैसकल के लिए, इसकी कुछ सीमाएँ हैं, उदाहरण के लिए, यह विचारों, ट्रिगर, संग्रहीत प्रक्रियाओं का समर्थन नहीं करता है।

अधिक के लिए, EDB माइग्रेशन टूलकिट देखें । निश्चित नहीं है, लेकिन mysql-> oracle-> postgresql को अपने संग्रहीत कार्यविधियों (यदि वे मौजूद हैं) को बचाने के लिए माइग्रेट करना संभव हो सकता है।

यह ग्रीप: डेटाबेस और एसक्यूएल माइग्रेशन टूल


1

यह केवल मौजूदा उत्तरों को जोड़ने के लिए है, जिसने मुझे इस समाधान को खोजने में मदद की। मैंने FromMySqlToPostgreSql का उपयोग किया । आपको बस यह करना है कि FromMySqlToPostgreSql को डाउनलोड करें और निकालें , नमूना कॉन्फिगर फ़ाइल की एक प्रति बनाएँ, इसमें db कनेक्शन मान सेट करें, और निम्न कमांड के साथ इंडेक्स फ़ाइल चलाएँ:

php index.php config.xml

सरल अभी तक प्रभावी!


क्या आप इस उपकरण के लिंक के साथ अपनी पोस्ट को संपादित कर सकते हैं, कृपया?
dezso

क्षमा करें, मैं यह भूल गया। जोड़ा गया!
toing_toing

आह, यह हास्यास्पद है। क्या आपने महसूस किया है कि टूल के लेखक ने एक उत्तर भी पोस्ट किया है? ;) अब मैंने किया।
dezso 10

प्रशंसा सुनकर खुशी हुई, धन्यवाद! हालांकि उन्होंने अपने अद्भुत प्लगइन के बारे में ज्यादा नहीं बताया है।
toing_toing

0

एक ओपनसोर्स टूल है, जो MySQL db को Postgresql db शामिल इंडेक्स, fks और डेटा में बदलने के लिए फंक्शंस प्रदान करता है।

https://github.com/ggarri/mysql2psql

यह टूल स्कीमा परिवर्तनों को भी परिभाषित करने की अनुमति देता है ताकि आप रन टाइम में अपने वर्तमान स्कीमा में कुछ अपग्रेड कर सकें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.