SQLite से PostgreSQL में जाने के लिए उपकरण


11

मुझे SQLite से PostgreSQL में लगातार माइग्रेट करने की आवश्यकता है। निरंतर रूप से, मेरा मतलब है कि मैं हर दिन PostgreSQL में SQLite डेटाबेस को पुनः प्राप्त करूंगा। यह अच्छा होगा अगर मैं SQLite में तालिकाओं में परिवर्तन कर सकता हूं क्योंकि मैं कृपया पोस्टग्रेसीक्यूएल डेटाबेस में मैन्युअल रूप से कोई बदलाव किए बिना कृपया कर सकता हूं। मैं पाइथन से माइग्रेशन चलाऊंगा, लेकिन यह कोई भी बाहरी उपकरण हो सकता है, जिसे कमांड लाइन से नियंत्रित किया जा सकता है। उपकरण को लिनक्स के लिए उपलब्ध होने की आवश्यकता है, और यह अच्छा होगा यदि यह विंडोज पर भी चलता है।


1
बस स्पष्ट करने के लिए, क्या आपको डेटा और स्कीमा दोनों को माइग्रेट करने की आवश्यकता है?
h0tw1r3


क्या आप इसके बारे में विस्तार से बता सकते हैं कि आपको ऐसा करने की आवश्यकता क्यों है? शायद डेटाबेस को कॉपी और परिवर्तित करने की तुलना में आपकी रूट समस्या से निपटने के लिए बेहतर तरीके हैं। उदाहरण के लिए, CleanFill ने एक ETL विकसित करने का सुझाव दिया।
निक चामास

@ मुझे खेद है, लेकिन यह एक बहुत ही खास मामला है, जिसका वर्णन करने के लिए बहुत अधिक व्याख्या / चर्चा होगी।
डेविड

@ डेविड - यदि आप अधिक उत्तर चाहते हैं, तो यह वास्तव में आपके उपयोग के मामले को एक और पैराग्राफ में सारांशित करने में मदद कर सकता है सबसे अच्छा आप बहुत ज्यादा समझा / चर्चा किए बिना कर सकते हैं। जैसा कि यह खड़ा है आप हमें बहुत अधिक अनुमान लगाने के लिए कह रहे हैं। अन्य एसई साइटों के लिंक हमेशा मददगार होते हैं यदि वे हमें यह समझने में मदद करें कि आप कहां से आ रहे हैं।
जैक का कहना है कि topanswers.xyz

जवाबों:


3

मैं डेटाबेस (MSSQL / MySQL मुख्य रूप से) के बीच माइग्रेट करने के लिए Navicat का उपयोग कर रहा हूं। यह लिनक्स और विंडोज पर चलता है, लेकिन मुख्य रूप से एक GUI उपकरण है। यदि आप एक प्रोफ़ाइल बनाते हैं, तो इसे कमांड-लाइन से शुरू किया जा सकता है। आप 30-दिवसीय परीक्षण डाउनलोड कर सकते हैं।


टिप के लिए धन्यवाद। क्या यह एकल कमांड लाइन इनपुट का उपयोग करके संपूर्ण माइग्रेशन प्रक्रिया चला सकता है?
डेविड

1
मेरा सुझाव है कि आप इस सवाल को नविकट समर्थन से पूछें। वे बहुत मददगार (IMO) हैं। वेबसाइट के अनुसार यह काम करना चाहिए, लेकिन मुझे कभी भी इसका परीक्षण / उपयोग करने की आवश्यकता नहीं थी।
प्रातः

4

क्या आपने ईटीएल टूल्स का उपयोग किया है? वे बाहरी हैं और मेरा मानना ​​है कि पेंटाहो खिड़कियां और लाइनक्स और इसके मुफ्त दोनों पर चलता है। पेंटाहो की साइट


नमस्ते, और साइट पर आपका स्वागत है! मैं पेंटाहो के बारे में जानता हूं, लेकिन मुझे नहीं पता था कि यह इसे हल कर सकता है। क्या यह इसे हल कर सकता है?
डेविड

1
मैं सवाल पढ़ने के दौरान ईटीएल के बारे में भी सोच रहा था लेकिन मुझे लगता है कि ओवरहेड और सीखने की अवस्था अधिक है। इसके अलावा, मुझे नहीं लगता कि प्रवास को "लगातार" करना आसान होगा।
DrColossos

धन्यवाद! मैं व्यक्तिगत रूप से SSIS के साथ अधिक अनुभवी हूं, लेकिन यह SQL सर्वर के साथ आता है और आपको SQL लाइसेंस के लिए भुगतान करना होगा। पेंटाहो एक ईटीएल उपकरण है और स्रोत से गंतव्य तक डेटा को स्थानांतरित करने में सक्षम है। आपको स्रोत / गंतव्य के साथ संवाद करने के लिए सही ड्राइवरों की आवश्यकता होगी। ईटीएल के किसी भी उपकरण के साथ सीखने का एक सा हिस्सा है, लेकिन यह आपके टूलबॉक्स में एक और उपकरण है, एह? डेटा माइग्रेट करने के लिए कई चरण 1 होंगे, दूसरा DDL परिवर्तन के लिए। मैं 1 से शुरू करूंगा - बस डेटा को स्थानांतरित करें (आसान कदम), एक बार जब आप इसे नीचे लाते हैं, तो आप आगे बढ़ने के लिए अधिक आरामदायक होंगे।
क्लीनफिल

इस की आवाज़ से, मुझे यकीन नहीं है कि पेंटाहो का उपयोग जावा या पायथन में खरोंच से लिखने से अधिक तेज होगा, एक नया ईटीएल उपकरण का उपयोग करने की सीखने की अवस्था और जटिलता को देखते हुए।
डेविड

@ डेविड - एक नया ईटीएल टूल सीखना, पहिया आईएमओ का फिर से आविष्कार करने की तुलना में काफी आसान होने की संभावना है
जैक कहते हैं कि टॉपसान्वर्स ट्राइ करें ।xyz

2

मुझे लगता है कि यह संभव है, लेकिन मुझे नहीं लगता कि बहुत से लोग इससे खुश होंगे। सामान्य स्थिति में, PosgreSQL और SQLite तालिका परिभाषाओं को बहुत अलग तरीके से व्यवहार करते हैं।

CREATE TABLE test (trans_date date primary key);

यदि मैं SQLite से उस तालिका की सामग्री को डंप करता हूं, तो यहां मुझे क्या मिलेगा।

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (trans_date date primary key);
INSERT INTO "test" VALUES('2011-01-01');
INSERT INTO "test" VALUES('Oh, bugger.');
COMMIT;

मुझे लगता है कि PostgreSQL की तरफ से हर कॉलम VARCHAR () होना चाहिए। सभी SQLite डेटा प्रकारों को VARCHAR () में बदलने के लिए स्क्रिप्ट लिखना बहुत कठिन नहीं हो सकता है। लेकिन ऐसा लगता है कि समुद्र के नीचे मरे हुए व्हेल को लात मारने जैसा भयानक सा अहसास हो रहा है।


VARCHAR के लिए सभी स्तंभों को परिवर्तित करना पर्याप्त अच्छा नहीं होगा। इसके लिए एक उपकरण होना चाहिए या इसे करने के लिए कुछ उचित तरीका होना चाहिए।
डेविड

ऊपर के उदाहरण तालिका में, आप PostgreSQL में एक तिथि स्तंभ के साथ एक तालिका बना सकते हैं, लेकिन आप इसमें दोनों पंक्तियों को आयात नहीं कर सकते। इसलिए, सामान्य मामले में, मुझे कुछ भी नहीं लगता है, लेकिन VARCHAR (एन) संभवतः काम कर सकता है।
माइक शेरिल 'कैट रिकॉल'

आपको "ओह, बग्गर" क्यों मिलता है। SQLite से मूल्य?
डेविड

2
@ डेविड: क्योंकि SQLite आपको "तिथि" प्रकार के कॉलम में "ओह, बग्गर" स्टोर करने देता है। SQLite आपको किसी भी कॉलम के बारे में कुछ भी स्टोर करने देता है। कि SQL मानकों को सन्निकट करने वाले किसी भी dbms के लिए SQLite को स्थानांतरित करने में मुख्य समस्याओं में से एक है।
माइक शेरिल 'कैट रिकॉल'

1

आप उपयोग कर सकते हैं

ESF डाटा माइग्रेशन टूलकिट

मैंने इसे आज़माया है, यह अच्छा काम करता है, और आपको कई प्रकार के डेटाबेस से कई प्रकार के डेटाबेस में रूपांतरण के लिए विकल्प प्रदान करता है: जैसे कि साइक्लाइट, mysql, mssql, oracle, postgresql और बस कई!

तुम भी बस इसके परीक्षण / मूल्यांकन संस्करण पर एक नज़र है, परिणाम वास्तव में संतोषजनक हैं!


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