大きなmysqlデータベースをpostgresqlに変換するための変換ツールを必死に探しています。次のツール/スクリプトが必要です。
リストされているさまざまなツールを試しました here が、どれもうまくいきませんでした。
前もって感謝します。
2つの非常に異なるDBMS間での移行には、データを移行するだけではなくlotが必要です。しかし、通常はデータの移行が最も簡単な部分です。
私が試した方法は無料で、それが機能することを確認できます:
MySQLの動作に依存して違法なデータを受け入れる場合(2月31日など)、データのインポートは実際には難しい場合があります。
私の推測では、これはツールを検索し、それらの束を評価してから、選択したものを理解しようとするよりも速くなります。しかし、それはあなたがどのような「大きな」を参照しているかに依存します。数百のテーブルが大きい場合、これは実行できない可能性があります。 bigが行数のみを参照している場合は、これがおそらく最も速い方法です。
Liquibase 、 SchemaSpy または WbSchemaReport のように、DBMSに依存しない(XML)形式でデータベーススキーマをダンプできるツールがいくつかあります。おそらくLiquibaseが最も使いやすいでしょう。他のものは、生成されたXMLを変換するために、XSLTを記述/拡張するいくつかの手動作業を必要とします。
MySQLでトリガーとストアドプロシージャを使用している場合、後で大規模な手動修正を必要とせずにそれらを変換できるany自動化ツールがあるとは思わない-生成されたプロシージャはおそらく使用しないターゲットDBMSの高度な機能。
最近それをしなければならなかったし、ツールを探してそれを使って何かをすることができるようになるには時間がかかりすぎたので、vimと置換fooを使って手でそれをやった
INT NOT NULL AUTO_INCREMENT
(またはこのようなもの)をSERIAL
に置き換えますTEXT
に関連するすべての文字列を変更します(TEXT
、VARCHAR
などを使用しても速度に違いはありません)ENGINE InnoDB
(またはその他)を削除しますUNSIGNED
BYTEA
です'
のみを使用しますCONCAT
をサポートしています。9.1より前は、'string' || ' string'
を使用して行われていました"
これらの各箇条書きは、1つの置換で実行する必要があります。
スキーマとデータを個別にエクスポートしました。 INSERT
ではなくCOPY
sを使用してください。何も起こっていないのであれば、データは(ほとんど)クリーンアップを必要としません。すべてがUTF-8
にあることを確認してください。 2つの独立したファイルを使用すると、スキーマが管理しやすくなり、編集する1 GBのファイルがありません。
スキーマをロードすると、エラーのある場所でかなり詳細な情報が得られるため、デバッグは非常に簡単です。
私はこれを一度も試したことがないので捨てますが、 Tungesten Replicator はあなたが望むことをするかもしれません。それは主に複製ツールですが、少なくともデータの一部で役立つブートストラッププロセスがあると思います。