هل هناك أداة بسيطة لتحويل بناء جملة mysql إلى postgresql؟
-
01-07-2019 - |
سؤال
لقد قمت بتجربة الأدوات المذكورة هنا, ، حقق بعضها نجاحًا أكبر من البعض الآخر، ولكن لم يعطني أي منها صيغة Postgres صالحة يمكنني استخدامها (أخطاء صغيرة وما إلى ذلك)
المحلول
هناك mysqldump
الخيار الذي يجعله يخرج كود PostgreSQL:
mysqldump --compatible=postgresql ...
نصائح أخرى
بعد مرور بعض الوقت على جوجل وجدت هذا المشنور.
- تحميل هذا mysql2psql جوهرة باستخدام
[sudo] gem install mysql2psql
. - قم بإنشاء ملف التكوين عن طريق التشغيل
mysql2psql
.سترى خطأ ولكن أmysql2psql.yml
يجب أن يكون قد تم إنشاء الملف. - يحرر
mysql2psql.yml
- يجري
mysql2psql
مرة أخرى لترحيل البيانات الخاصة بك.
نصيحة:تعيين force_truncate
ل true
في الخاص بك mysql2psql.yml
إذا كنت تريد مسح قاعدة بيانات postgresql قبل ترحيل بياناتك.
لقد استخدمت py-mysql2pgsql.بعد التثبيت، يحتاج فقط إلى ملف تكوين بسيط بتنسيق yml (المصدر، الوجهة)، على سبيل المثال:
# if a socket is specified we will use that
# if tcp is chosen you can use compression
mysql:
hostname: localhost
port: 3306
socket: /tmp/mysql.sock
username: mysql2psql
password:
database: mysql2psql_test
compress: false
destination:
# if file is given, output goes to file, else postgres
file:
postgres:
hostname: localhost
port: 5432
username: mysql2psql
password:
database: mysql2psql_test
الاستخدام:
> py-mysql2pgsql -h
usage: py-mysql2pgsql [-h] [-v] [-f FILE]
Tool for migrating/converting data from mysql to postgresql.
optional arguments:
-h, --help show this help message and exit
-v, --verbose Show progress of data migration.
-f FILE, --file FILE Location of configuration file (default:
mysql2pgsql.yml). If none exists at that path,
one will be created for you.
المزيد على صفحتها الرئيسية https://github.com/philipsoutham/py-mysql2pgsql.
يوجد برنامج واحد للدفع مدرج في صفحة postgresql هذه:http://www.postgresql.org/download/products/1
وهذا موجود على pgFoundry:http://pgfoundry.org/projects/mysql2pgsql/
هذه الصفحة يسرد الاختلافات في بناء الجملة، ولكن لم أجد محول استعلام بسيط يعمل بعد.باستخدام ORM يمكن أن تمنع الحزمة بدلاً من SQL الخام هذه المشكلات.
أقوم حاليًا باختراق محول لقاعدة تعليمات برمجية قديمة:
function mysql2pgsql($mysql){
return preg_replace("/limit (\d+), *(\d+)/i", "limit $1 offset $2", preg_replace("/as '([^']+)'/i", 'as "$1"', $mysql)); // Note: limit needs order
}
ل CREATE
صياغات، SQLlines يحول معظمها عبر الإنترنت.لا يزال يتعين علي تعديل ملف mysqldump بعد ذلك، على الرغم من ذلك:
"mediumtext" -> "text", "^LOCK.*" -> "", "^UNLOCK.*" -> "", "`" -> '"', "'" -> "''" in 'data', "0000-00-00" -> "2000-01-01", deduplicate constraint names, " CHARACTER SET utf8 " -> " ".
"int(10)" -> "int" was missed in the last table, so pass that part of the mysqldump through http://www.sqlines.com/online again.
جرب هذا، فهو يعمل مثل السحر !!
http://www.sqlines.com/online
القي نظرة على مسبك PG, ، تميل المرافق الإضافية لـ Postgres إلى العيش هناك.أعتقد أن الأداة التي تبحث عنها موجودة بالرغم من ذلك.
على الأرجح أنك لن تحصل أبدًا على أداة لمثل هذه المهمة والتي من شأنها أن تقوم بكل وظيفتك نيابةً عنك.كن مستعدًا للقيام ببعض أعمال إعادة الهيكلة بنفسك.