大きなmysqlデータベースをpostgresqlに変換する変換ツールを切望しています。ツール/スクリプトが必要です:
- 自由
- Linuxで動作します
- 使いやすく、バグがありません
- 実際に試してみて、動作することを確認しました
- できれば、JavaまたはRubyで作成しないでください
ここにリストされているさまざまなツールを試しましたが、うまくいきませんでした。
前もって感謝します。
大きなmysqlデータベースをpostgresqlに変換する変換ツールを切望しています。ツール/スクリプトが必要です:
ここにリストされているさまざまなツールを試しましたが、うまくいきませんでした。
前もって感謝します。
回答:
2つの非常に異なるDBMS間で移行する必要があり多くのことをより多くのデータだけを移行するよりも。ただし、通常はデータの移行が最も簡単な部分です。
私が試した方法は無料で、それが機能することを確認できます:
MySQLの動作に依存して違法なデータを受け入れている場合(2月31日など)、データのインポートは実際には難しい場合があります。
私の推測では、これはツールを検索し、それらの束を評価してから、選択したものを理解しようとするよりも速くなるだろうということです。しかし、それはあなたがどんな種類の「大きな」を指しているかによります。大きなテーブルが数百個ある場合、これは現実的ではないかもしれません。行の数だけが大きい場合は、おそらくこれが最も簡単な方法です。
などのDBMSに依存しない(XML)形式でデータベーススキーマをダンプすることができますそこにいくつかのツールがありますLiquiBaseを、SchemaSpyまたはWbSchemaReportが。おそらくLiquibaseが最も使いやすいでしょう。その他は、生成されたXMLを変換するために、XSLTを作成/拡張する手作業が必要になります。
あなたは、MySQLにトリガーやストアドプロシージャを使用している場合、私はそこになると信じていない任意の、その後、生成された手順は、おそらくターゲットDBMSのいずれかの高度な機能を使用することはありません-その後の主要なマニュアルの固定を必要とせずにそれらを翻訳することができ、自動化ツール。
最近それをしなければならなかったし、ツールを探してそれを使ってできるようになるのに時間がかかりすぎたので、私はvimとsubstitution-fooで手でそれをしました
INT NOT NULL AUTO_INCREMENT
(またはこのようなもの)をSERIAL
TEXT
(使用時に速度の違いなしTEXT
、VARCHAR
または類似の)
`ENGINE InnoDB
(または何でも)UNSIGNED
BYTEA
'
をますCONCAT
は非標準の文字列連結のフォールバックとしてします。 'string' || ' string'
"
これらの箇条書きのそれぞれは、単一の置換で実行する必要があります。
スキーマとデータを別々にエクスポートしました。INSERT
の代わりにs を使用してくださいCOPY
。行き詰まっている場合は、データのクリーンアップは(ほとんど)必要ありません。すべてがオンになっていることを確認しますUTF-8
。2つの別個のファイルを使用すると、スキーマがより管理しやすくなり、編集するための1GBファイルがありません。
スキーマをロードすると、エラーのある場所に関する非常に詳細な情報が得られるため、デバッグは非常に簡単です。
私はこれを試したことがないので捨てていますが、Tungesten Replicatorはあなたが望むことをするかもしれません。これは主に複製ツールですが、少なくともデータ部分で役立つブートストラッププロセスがあるかもしれません。