PostgreSQL এ দুটি ডাটাবেসের মধ্যে ডেটা কীভাবে তুলনা করবেন?


93

অভিন্ন কাঠামোর সাথে দুটি ডাটাবেসের তুলনা করা কি সম্ভব? ধরা যাক যে আমার কাছে দুটি ডাটাবেস ডিবি 1 এবং ডিবি 2 রয়েছে এবং আমি তাদের মধ্যে ডেটাতে কোনও পার্থক্য আছে কিনা তা যাচাই করতে চাই।




postgrescompare.com / ডাউনলোডগুলি এখন ডেটার সাথেও তুলনা করে
নীল অ্যান্ডারসন

উত্তর:


85

এখানে বেশ কয়েকটি সরঞ্জাম রয়েছে:

(নোট করুন যে এই সরঞ্জামগুলির বেশিরভাগটি কেবল কাঠামোর তুলনা করতে পারে তবে ডেটা নয়)

বিনামূল্যে

ব্যবসায়িক:


17
কেবল liquibase.org এবং অ্যাকোয়া ডেটা স্টুডিওতে ডেটা তুলনা হয় বলে মনে হয়, অন্যটি কেবল স্কিমা তুলনা করে।
আমির আলী আকবরী

@ আমিরআলিআকবাড়ী লিকুইবেস স্কিমার বিভিন্নতা সমর্থন করে
a_horse_with_no_name

4
দেখে মনে হচ্ছে যে apgdiffউত্তরাধিকারী টেবিলগুলি ভালভাবে সমর্থন করে না এবং আমি এটি ব্যবহার করার চেষ্টা করার সাথে সাথেই ব্যতিক্রম ছুঁড়ে ফেলা হয়। WbSchemaDiffখুব ভাল কাজ করে, অবাক!
smartwjw

4
টেবিলের অস্তিত্ব রয়েছে এবং একই কাঠামো রয়েছে যখন আমিরআলিআকবাড়ির তরলকেই ডেটা তুলনা করে বলে মনে হয় না।
অ্যাডিটসু ছেড়ে গেছে কারণ এসই ইভিএল

14
-1। ওপি ডেটা (রেকর্ড / সারি) তুলনা করার বিষয়ে জিজ্ঞাসা করছিল এবং আপনি বেশিরভাগ সরঞ্জাম তালিকাভুক্ত করেছিলেন যা কাঠামোর তুলনা করে , যা ওপি স্পষ্ট করে বলেছিল লক্ষ্য ডাটাবেসের মধ্যে অভিন্ন, তাদের তুলনা করার কোনও কারণ নেই। কোনটি আসলে অনুরোধকৃত কাজটি করে তা স্পষ্ট করে বলুন।
কমই '

39

pg_dumpউভয় ডাটাবেস ব্যবহার করে এবং ফাইলগুলি পৃথক করে দেখুন।


23
সহজ এবং সরাসরি জন্য +1। তবে আমরা কি নিশ্চিতভাবে জানি যে pg_dump একই ক্রমে অভিন্ন ডাটাবেসগুলি থেকে ডেটা ফেলে দেবে, যদি বলি, টেবিলগুলি বিভিন্ন ক্রমে নির্মিত হয়েছিল? (আমি আশা করি অর্ডারটি সীমাবদ্ধতার উপর নির্ভরশীলতার উপর ভিত্তি করে তৈরি করা হয়েছে, এটি কোনও সময় সৃষ্টির সময় যত্নশীল নয়, তবে আশা ভাল হয় না))
মাইক শেরিল 'ক্যাট রিকল'

10
আপনি -a-d এবং | ব্যবহার করতে পারেন সাজান . তবে এই ডেটা আমদানিযোগ্য নাও হতে পারে, তবে এটি প্রাথমিক পরীক্ষার জন্য ঠিক হবে be
কেম গেলার

এটি ফলাফলগুলিতে উচ্চতর হওয়া উচিত, সত্যি বলতে। দিনটি বাঁচাতে কাউকে আলাদা করার উপর নির্ভর করা উচিত নয় যাতে এই সম্পূর্ণ বর্ধিত, ভারী, জাভা ভিত্তিক সমাধানগুলি ওভারকিলের মতো মনে হয়। যাইহোক, এটি আপনার মাইগ্রেশন যাচাই করে তা বোধগম্য নয় এবং এটির pg_dumpজন্য ঠিক আছে। আপনি যদি এর সাথে উল্লেখযোগ্য ভিন্নতা দেখতে পান তবে আপনি pg_dumpসম্ভবত তুলনামূলকভাবে বাইরে থাকা জিনিসগুলির তুলনা করার চেষ্টা করছেন। কমপক্ষে পিজি ডিবিএস তুলনা করার জন্য।
sas

4
দুঃখের বিষয় এটি কেবল ছোট ডাটাবেসে কাজ করে, কারণ ডিফ আমার কাছে থাকা কিছু বড় ডাম্পগুলি পরিচালনা করতে পারে না। অন্যথায় এটি (এখনও!) সত্যই আমি খুঁজে পেল একমাত্র কার্যক্ষম সমাধান। যদিও আমি এর psql -c '\x' -c 'SELECT... ORDER BY...'পরিবর্তে ব্যবহার করছি pg_dump
nyov

11

আর একটি ফ্রি অ্যাপ (এটি কেবল কাঠামোর সাথে তুলনা করতে পারে তবে ডেটা নয় ):

ডিবিভার - আপনি একে অপরের সাথে তুলনা করতে ডাটাবেস, টেবিল ইত্যাদি নির্বাচন করতে পারেন


4
আপনি কীভাবে ডিবিভারের সাথে 2 টি ডাটাবেস থেকে ডেটা তুলনা করবেন এটি আরও ভালভাবে ব্যাখ্যা করতে পারেন?
নিকোলা

4
আমি যতদূর জানি ডিবিভার কেবলমাত্র মেটাডেটা তুলনার অনুমতি দেয়, ডেটা তুলনা করে না।
নিকোলা

খুব সুন্দর সরঞ্জাম। এটি সত্য যে এটি প্রথমে এটি কীভাবে করা যায় এটি খুব স্বজ্ঞাত নয়। আপনাকে অবশ্যই 2 বা ততোধিক বস্তু নির্বাচন করতে হবে যাতে আপনি এই বিকল্পটি দেখতে পারেন।
ইহবেহিব

8

আমি প্রচুর সরঞ্জাম মূল্যায়ন করেছি এবং নিম্নলিখিত সমাধানগুলি পেয়েছি:

স্কিমার তুলনা :

সবচেয়ে আকর্ষণীয় ছিল লিকুইবেস, পারস্য এবং পিজকোড কিপার:

( ইস্যু ) লিক্সবেস রূপান্তর:

 SET DEFAULT nextval('myschema.name_id_seq'::regclass)

মধ্যে

BIGSERIAL

সুতরাং এটি ব্যবহার করতে প্রত্যাখ্যান করা হয়েছিল

( ইস্যু ) পারস্যেরা ততক্ষণ কাজ করেছে যতক্ষণ না আমি কিছু অতিরিক্ত স্কিমা যুক্ত করেছি এবং এটি নীচে ফেলে দেওয়া শুরু করে:

pyrseas_1       | TypeError: 'NoneType' object is not iterable

সুতরাং আমি পিজকোডকিপারকে পেয়েছি এটি পুরোপুরি কার্যকর হয় এবং এটি জীবিত (আপনি প্রকাশগুলি পরীক্ষা করতে পারেন)। আমি নিম্নলিখিত কমান্ড ব্যবহার করি:

./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

ডেটা তুলনা: আমি লিক্সবেসটি ব্যবহার করার চেষ্টা করেছি এবং এটি কার্যকর হয় না আপনি লিকবেজের সাথে দুটি ডাটাবেসের ডেটা পার্থক্য সম্পর্কে আমার অনুত্তরিত প্রশ্নে যে পদক্ষেপগুলি চেষ্টা করেছি তা দেখতে পাচ্ছেন

সুতরাং আমি অন্য একটি প্রকল্প পেয়েছি এসকিউএল ওয়ার্কবেঞ্চ / জে এটি সত্যিই দুর্দান্ত কাজ করে এবং এসকেউএলে রিল ডিফারেট জেনারেট করে। আমি নিম্নলিখিত কমান্ড ব্যবহার করি:

  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 ;'"

উভয় সরঞ্জামই বস্তুর পরিস্রাবণকে সমর্থন করে। এটা সত্যিই সুবিধাজনক।

মাইগ্রেশন

এবং পরিশেষে আমি কেবল মাইগ্রেশন / সংস্করণ ট্র্যাকিংয়ের জন্য লিক্সবেস ব্যবহার করি।


6

আমি পোস্টগ্রিসের জন্য একটি বিস্তৃত তুলনা সরঞ্জামে কাজ করছি। এটি বিটা থাকাকালীন বিনামূল্যে হবে।

PostgresCompare

প্রাথমিকভাবে এটি কেবল স্কিমা (ডিডিএল) তুলনা তবে আমরা সম্ভবত ডেটাতেও প্রসারিত করব। আমি বিশ্বাস করি যে এটি এমন একটি সরঞ্জাম যা তাদের বিকাশের পরিবেশ, অপারেশন ইত্যাদি কীভাবে কাজ করে তাও পরিবর্তন না করেই প্রচুর শপগুলিকে তাদের বর্তমান আরডিবিএমএস থেকে সরানোর জন্য প্রয়োজন হয়।


4
ডেটাও খুব গুরুত্বপূর্ণ। স্কিমার একা যথেষ্ট নয়।
হিউম্যান

4
হাই @ হুমান দেরী উত্তর দেওয়ার জন্য দুঃখিত। আপনি ঠিক বলেছেন, ডেটা হবে পরবর্তী পদক্ষেপ। স্কিমা তুলনা সরঞ্জামটি তৈরি করার বিষয়ে দুর্দান্ত জিনিসটি হ'ল টেবিলগুলি আবিষ্কার করার জন্য সমস্ত কোড তাদের মধ্যে ভাগ করা যায়।
নীল অ্যান্ডারসন

একটি সাধারণ স্কিমা তুলনা সরঞ্জাম নিজে তৈরি করার সময় আমি এই উত্তরটি পেরিয়ে এসেছি। আমি আপনার ওয়েবসাইটে গিয়েছিলাম এবং সরঞ্জামটি খুব আশাব্যঞ্জক দেখাচ্ছে। বিটা সংস্করণটি চেষ্টা করার জন্য অপেক্ষা করতে পারছেন না
অবন্তিকা সায়নী

আলভা এখনই অবন্তিকাসাইনী উপলভ্য এবং আপনি যদি এটি চেষ্টা করে থাকেন তবে দয়া করে আমাকে জানান যে এটি কীভাবে চলে তাই আমি সবার জন্য এটি উন্নত করতে পারি।
নীল অ্যান্ডারসন

আপনার লাইসেন্সের একটি শিক্ষামূলক সংস্করণ করা উচিত। শিক্ষাগত উদ্দেশ্যে দাম খুব বেশি।
রিনালডলকম্যান

2

আমি যে সেরা সরঞ্জামটি দেখেছি https://pythonhosted.org/Pyrseas/

  1. A dbtoyaml ডাটাবেস থেকে ডাম্প পান ...

  2. A => B yamltodb থেকে মাইগ্রেশন উত্পন্ন করুন ... [ধাপ ১-এ উত্পন্ন ফাইল]


এটি একমাত্র সরঞ্জাম যা একটি ডেটাবেস এবং একটি ডাম্প ফাইলের সাথে তুলনা করে বিভিন্ন স্ক্রিপ্ট তৈরি করে। সাধারণত অন্যান্য সরঞ্জাম দুটি ডাটাবেসের তুলনা করে। এই বৈশিষ্ট্যটির জন্য ধন্যবাদ, বিকাশকারীরা একটি স্থানীয় ডেভ ডাটাবেসের কাজ করতে পারে, তারপরে ভিসিএস দ্বারা মাইগ্রেশন স্ক্রিপ্ট তৈরি না করে তাদের পরিবর্তনগুলি বিতরণ এবং বিতরণ করতে পারে, কেবল ডিবিটোয়ামল চালায়। ওহের টিম বিকাশকারীরা তাদের স্থানীয় ডাটাবেসগুলি একটি একক কমান্ড (yamltodb) দিয়ে আপডেট করতে পারে। এই কর্মপ্রবাহটি ভিজ্যুয়াল স্টুডিও ডাটাবেস প্রকল্পের মতো কিছুটা কাজ করে।
Andreav

0

আমি ডাটাবেসে ডেটা তুলনা করার জন্য একটি সরঞ্জামও সন্ধান করছি (বিশেষত আমি রেডশিফ্ট ডিবি তুলনায় আগ্রহী ছিলাম)। এ পর্যন্ত সেরা আমি খুঁজে পাওয়া যায়নি https://www.dbbest.com/products/database-compare-suite/#close । দুর্ভাগ্যক্রমে বিনামূল্যে ট্রায়ালটির একদিন পরে মেয়াদ শেষ হয়।


0

আমি 2 টি লাইভ PostgreSQL ডাটাবেস (ডাম্প নয়), টেবিলের ডেটা এবং সিকোয়েন্সগুলির সাথে তুলনা করার জন্য একটি সরঞ্জাম তৈরি করেছি। খুব প্রারম্ভিক দিন তবে আমি যা করতে চাই তা অর্জন করেছে, সম্ভবত এটি আপনাকেও সহায়তা করতে পারে।

https://github.com/dmarkey/pgdatadiff


0

আমার মতে পোস্টগ্রেএসকিএল-এ কোমাপ্রিংয়ের জন্য ডিবিফোজই সবচেয়ে শক্তিশালী হাতিয়ার। এটি ডিভার্ট কোম্পানির একটি পণ্য y আপনি এখানে ডাউনলোড করতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.