回答:
やってみました:
mysqldump --compatible=postgresql dbname > export.sql
その後、引用符をエスケープするためにこれを行います
sed "s/\\\'/\'\'/g" export.sql > export1.sql
さらにマッサージが必要な場合があるため、mysqldump docoをより詳しく見てください。
mysqldump
まだ誰も修正していません。syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
以下に、非常に役立つオープンソースツールをいくつか示します
。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
値(カレンダーの年がゼロにならないため)。
実際、EnterpriseDB自身が開発した、非常に使いやすい無料の移行ツールがあります。StackBuilder:Migration Toolkitからインストールできます
私は最近、DBConvertの non-freeツールを使用してアクセスデータベースをpostgresに変換しました。MySQL <-> postgres用の同様のツールを販売していますが、これは使用していませんが、コマンドラインツールのみに関心がある場合を除き、検討する価値があります。
あなたが私が彼らと提携していないと思っている場合のために:-)
たとえば、EnterpriseDB Migration Wizardを使用できます。
OracleDBを簡単に移行できます。しかし、Mysqlにはいくつかの制限があります。たとえば、ビュー、トリガー、ストアドプロシージャはサポートしていません。
詳細については、EDB Migration Toolkitを参照してください。確かではありませんが、ストアドプロシージャを保存してmysql-> oracle-> postgresqlを移行することが可能です(存在する場合)。
Grep this:データベースおよびSQL移行ツール
これは、既存の回答に追加するだけで、このソリューションを見つけるのに役立ちました。FromMySqlToPostgreSqlを使用しました。必要なことは、FromMySqlToPostgreSqlをダウンロードして抽出し、サンプル構成ファイルのコピーを作成し、その中にdb接続値を設定し、次のコマンドでインデックスファイルを実行することです。
php index.php config.xml
シンプルでありながら効果的!
MySQL dbをPostgresql db includinインデックス、fks、およびデータに変換する機能を提供するオープンソースツールがあります。
https://github.com/ggarri/mysql2psql
このツールでは、スキーマの変更を定義することもできるため、実行時に現在のスキーマをアップグレードできます。