क्या समान संरचना वाले दो डेटाबेस की तुलना करना संभव है? मान लीजिए कि मेरे पास दो डेटाबेस DB1 और DB2 हैं और मैं जांचना चाहता हूं कि क्या उनके बीच डेटा में अंतर है।
क्या समान संरचना वाले दो डेटाबेस की तुलना करना संभव है? मान लीजिए कि मेरे पास दो डेटाबेस DB1 और DB2 हैं और मैं जांचना चाहता हूं कि क्या उनके बीच डेटा में अंतर है।
जवाबों:
(ध्यान दें कि इनमें से अधिकांश उपकरण केवल संरचना की तुलना कर सकते हैं, लेकिन डेटा की नहीं)
नि: शुल्क मधुमक्खियों:
व्यावसायिक:
apgdiff
इनहेरिट टेबल का अच्छी तरह से समर्थन नहीं करता है, और जब मैं इसका उपयोग करने की कोशिश करता हूं तो अपवाद तुरंत फेंक देता है। WbSchemaDiff
बहुत अच्छा काम करता है, आश्चर्य!
pg_dump
दोनों डेटाबेस और फ़ाइलों को अलग करने पर प्रयोग करें।
pg_dump
लिए ठीक है। यदि आप महत्वपूर्ण अंतर देखते हैं, तो आप pg_dump
शायद उन चीजों की तुलना करने की कोशिश कर रहे हैं जो तुलना करने से परे हैं। कम से कम पीजी डीबीएस की तुलना करने के लिए।
psql -c '\x' -c 'SELECT... ORDER BY...'
इसके बजाय उपयोग कर रहा हूं pg_dump
।
एक और मुफ्त ऐप (जो केवल संरचना की तुलना कर सकता है, लेकिन डेटा नहीं ):
DBeaver - आप एक दूसरे के साथ तुलना करने के लिए डेटाबेस, टेबल आदि का चयन कर सकते हैं
मैंने बहुत सारे उपकरणों का मूल्यांकन किया है और निम्नलिखित समाधान पाया है:
स्कीमा तुलना :
सबसे दिलचस्प लिक्विबेस, पर्सियस और PgCodeKeeper थे:
( समस्या ) लिकेबेस परिवर्तित करता है:
SET DEFAULT nextval('myschema.name_id_seq'::regclass)
में
BIGSERIAL
इसलिए इसे उपयोग करने के लिए अस्वीकार कर दिया गया था
( समस्या ) पर्सियस ने ठीक काम किया जब तक मैंने कुछ अतिरिक्त स्कीमा नहीं जोड़ा और यह निम्नलिखित शुरू हो गया:
pyrseas_1 | TypeError: 'NoneType' object is not iterable
तो मैंने पाया है PgCodeKeeper यह पूरी तरह से काम करता है और यह जीवित है (आप रिलीज की जांच कर सकते हैं)। मैं निम्नलिखित आदेश का उपयोग करता हूं:
./pgcodekeeper-cli.sh -E -I ./ignore.txt \
-s "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-t "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-o /result/schema-diff-$(date +'%m%d%y_%H%M%S').sql
डेटा तुलना: मैंने लिकेबेस का उपयोग करने की कोशिश की है और यह सिर्फ आपके द्वारा अनुत्तरित प्रश्न के लिए दो डेटाबेस में डेटा अंतर के बारे में काम करने की कोशिश नहीं कर सकता है।
इसलिए मुझे एक और प्रोजेक्ट SQL वर्कबेंच / जे मिला है, यह वास्तव में अच्छा काम करता है और एसक्यूएल में वास्तविक अंतर उत्पन्न करता है। मैं निम्नलिखित आदेश का उपयोग करता हूं:
java -jar /sqlworkbench.jar -command="'WbDataDiff -excludeTables=$EXCLUDE_TABLES \
-referenceConnection=$REFERENCE_CONNECTION \
-targetConnection=$TARGET_CONNECTION -referenceSchema=$1 \
-targetSchema=$1 -file=$DIFF_RESULT_FILE -singleFile=true \
-includeDelete=true -ignoreMissingTarget=true ;'"
दोनों उपकरण वस्तुओं को छानने का समर्थन करते हैं। यह वास्तव में सुविधाजनक है।
माइग्रेशन
और अंत में मैं सिर्फ माइग्रेशन / संस्करण ट्रैकिंग के लिए लिकेबेस का उपयोग करता हूं।
मैं पोस्टग्रेज के लिए एक व्यापक तुलना उपकरण पर काम कर रहा हूं। यह बीटा में रहते हुए मुफ्त होगा।
प्रारंभ में यह सिर्फ स्कीमा (डीडीएल) तुलना है लेकिन हम शायद डेटा में भी विस्तार करेंगे। मेरा मानना है कि यह एक ऐसा उपकरण है जिसमें बहुत सी दुकानों को अपने वर्तमान आरडीबीएमएस से स्थानांतरित करने की आवश्यकता होती है बिना यह भी बदले कि उनके विकास के वातावरण, संचालन आदि कैसे काम करते हैं।
सबसे अच्छा उपकरण जो मैंने कभी देखा https://pythonhosted.org/Pyrseas/
डेटाबेस से डंप करें एक dbtoyaml ...
A => B yamltodb से माइग्रेशन जनरेट करें ... [चरण 1 में उत्पन्न फ़ाइल]
मैं डेटाबेस में डेटा की तुलना करने के लिए एक टूल भी ढूंढ रहा हूं (विशेष रूप से मैं Redshift DB की तुलना करने में रुचि रखता था)। अब तक मैंने जो सबसे अच्छा पाया वह है https://www.dbbest.com/products/database-compare-suite/#close । दुर्भाग्य से नि: शुल्क परीक्षण एक दिन के बाद समाप्त हो रहा है।
मैंने 2 लाइव PostgreSQL डेटाबेस (डंप नहीं), टेबल डेटा और सीक्वेंस की तुलना करने के लिए एक टूल बनाया। बहुत शुरुआती दिन थे लेकिन मैंने जो करना चाहा उसे हासिल किया, शायद यह आपकी भी मदद कर सके।