MySQLデータベースをPostgreSQLに変換する方法は?


20

MySQLデータベースをPostgreSQLに変換するためのコマンドラインツールはありますか?通常のmysqldumpコマンドを使用してデータベースを変換する方法があるかどうかも知りたいです。


1
ここからスタート:wiki.postgresql.org/wiki/...
a_horse_with_no_name

4
これを見るたびに、私は喜びの涙を流します。
-rfusca


これは、このサイト全体で最も役立つ質問の1つです。
エヴァンキャロル

回答:


13

やってみました:

mysqldump --compatible=postgresql dbname > export.sql

その後、引用符をエスケープするためにこれを行います

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

さらにマッサージが必要な場合があるため、mysqldump docoをより詳しく見てください。


2
私はすでにあなたによって与えられた方法を試してみましたが、postgresqlで復元するときにエラーが発生しています
-Mughil

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/…によると、唯一許可されている値--compatibleansi
phunehehe

7

以下に、非常に役立つオープンソースツールをいくつか示します

。FromMySqlToPostgreSql は、機能が充実したツールであり、非常に使いやすいツールです。
これは、データ型をマッピングし、制約、インデックス、PK、およびFKをMySQL dbにあるとおりに移行します。
内部ではPostgreSQL COPYを使用しているため、データ転送は非常に高速です。
FromMySqlToPostgreSqlはPHPで記述されています(> = 5.4)。

pgloader   は、COPYコマンドを使用したPostgreSQL用のデータロードツールです。ただ使用することの主な利点

COPY
または
\copy
、Foreign Data Wrapperを使用することはトランザクションの動作です。pgloaderは拒否されたデータの個別のファイルを保持しますが、データベース内の適切なデータのコピーを試行し続けます。PostgreSQLのデフォルトの動作はトランザクションです。つまり、入力データ(ファイルまたはリモートデータベース)の誤った行は、テーブルのバルクロード全体を停止します。pgloaderは、MySQLの日付スタンプ0000-00-00および0000-00-00 00:00:00からPostgreSQLへの変換など、データの再フォーマットも実装しています。
NULL
値(カレンダーの年がゼロにならないため)。
LISPで記述され、ソースコードとして配布されるpgloaderなので、使用する前にコンパイルする必要があります。

それがあなたを助けることを願っています...


1
pgloaderはpostgre docsで推奨される移行ツールでもあるため、最良の選択だと思います。50個以上のテーブルを持つかなり小さなDBで成功してそれを使用しました。
カパジュ

3

実際、EnterpriseDB自身が開発した、非常に使いやすい無料の移行ツールがあります。StackBuilder:Migration Toolkitからインストールできます


3

私は最近、DBConvertの non-freeツールを使用してアクセスデータベースをpostgresに変換しました。MySQL <-> postgres用の同様のツール販売しています、これは使用していませんが、コマンドラインツールのみに関心がある場合を除き、検討する価値があります。

あなたが私が彼らと提携していないと思っている場合のために:-)


3

たとえば、EnterpriseDB Migration Wizardを使用できます。

OracleDBを簡単に移行できます。しかし、Mysqlにはいくつかの制限があります。たとえば、ビュー、トリガー、ストアドプロシージャはサポートしていません。

詳細については、EDB Migration Toolkitを参照してください。確かではありませんが、ストアドプロシージャを保存してmysql-> oracle-> postgresqlを移行することが可能です(存在する場合)。

Grep this:データベースおよびSQL移行ツール


1

これは、既存の回答に追加するだけで、このソリューションを見つけるのに役立ちました。FromMySqlToPostgreSqlを使用しました。必要なことは、FromMySqlToPostgreSqlをダウンロードして抽出し、サンプル構成ファイルのコピーを作成し、その中にdb接続値を設定し、次のコマンドでインデックスファイルを実行することです。

php index.php config.xml

シンプルでありながら効果的!


このツールへのリンクを使用して投稿を編集してください。
dezso

すみません、忘れました。追加しました!
-toing_toing

ああ、これは面白いです。ツールの作成者も回答を投稿していることに気づきましたか?;)今やった。
-dezso

おめでとうございます!彼は彼自身の素晴らしいプラグインについてはあまり説明していません。
toing_toing

0

MySQL dbをPostgresql db includinインデックス、fks、およびデータに変換する機能を提供するオープンソースツールがあります。

https://github.com/ggarri/mysql2psql

このツールでは、スキーマの変更を定義することもできるため、実行時に現在のスキーマをアップグレードできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.