2017-06-23 5 views
0

2つのdockerマシンで2つのmysqlデータベースとsqlalchemyを接続しています。Sqlalchemy - 全く同じスキーマを使ってデータベースから別のデータベースにデータをコピーする

これらはどちらも同じスキーマとデータを内部に持っています。

今私は2つのmysqlデータベースを1にマージするためにデータベースの1つのデータを別のデータベースにコピーしたいと思いますか?

答えて

1

はい、次のことができます。あなたがこれをインポートするデータベースに

mysqldump --no-create-info {yourdbname} > {yourdbname}.sql 

そして:あなたは上書きコピーするデータベース上の

実行この

mysql {yourdbname} < {yourdbname}.sql 

あなたは主キーや重複レコードの問題が発生する可能性があります。残念ながら、変更された主キーを使用してデータをエクスポートするためにSQLを生成し、外部キーの関係をそのまま維持する必要があります。

手順は、情報スキーマを照会するために必要とされるこの第二の複雑な問題:

  • は、情報スキーマ
  • からテーブル名を選択し
  • 情報スキーマを使用して主キーを選択して選択し、最大(プライマリーキー)を選択します。
  • 情報スキーマを使用して、前のmax(主キー)を主キーに追加し、その出力をデータファイルに書き込むSELECTクエリを作成します。

関連する外部キーには、関連するテーブルから同じ最大(プライマリキー)値を追加する必要があります。 書き込むコードはもう少し増えますが、50〜80行のストアドプロシージャでそれを行う必要があります。

+0

2台のドッカーマシンに2台のデータベースがあるので、私の場合は可能です – pwan

+0

あなたのデータに大きく依存します。 –

+0

mysqldumpがファイル呼び出し{mydatabase} .sqlを作成すると、そのファイルを別のドッカーマシンに持ってきて、あなたが言った2番目のコマンドを実行できます。そうですか? – pwan

関連する問題