質問

マルチデータベース環境、データベースから別のデータを別のデータに移動する方法は?

設定は次のようになります。

DATABASES = {
    'default': {},
    'users': {
        'NAME': 'user_data',
        'ENGINE': 'django.db.backends.sqlite3',
        'USER': 'user',
        'PASSWORD': 'superS3cret'
    },
    'customers': {
        'NAME': 'customer_data',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'cust',
        'PASSWORD': 'veryPriv@ate'
    }
}
.

これを行うための簡単な解決策/アプリはありますか?一方向の移行では十分ですが、複雑な外部キーと多対数の接続を持つ数十のモデルやオブジェクトがあるため、モデルやオブジェクトを繰り返し、それらを別の多くに保存しても問題は解決しません。

オブジェクトの作成は信号を使用してバージョンオブジェクトを作成し、これはユニークなキーをめちゃくちゃにしているため、

loaddataも失敗します。

バックエンドが異なるため、SQL DUMPSの使用は簡単ではありません。これを試してみましたが、私はPSQLのダンプをMy SQLite3データベースからダンプすることができませんでした。これは、外部キーをめちゃくちゃにしません。

SO Iは、データベースから別のデータをロードするが、信号を送信しており、外部キーでも機能しないソリューションが必要です。しかし、私はこれをするものを見つけることができませんでした。

役に立ちましたか?

解決

最後に私はこれを解決することができました。

を使用してテーブルを作成しました
manage.py syncdb --all
manage.py migrate --fake
.

loaddataを使用したダンプのロードは、完全性の問題により機能しませんでした。(例えば、外部キー制約など)

だから私は私のテーブルを変更しなければなりませんでした。私は壊れた制約を削除した後、問題なくloaddataを実行することができます。

しかしもちろん、私はカップルの制約を落としたので、私のデータベースはまだ壊れていました。したがって、psqlシェルを使用して、私のテーブルをもう一度変更する必要がありました。

PGADMINは便利になってきました。

他のヒント

インスタンスをあるデータベースから別のデータベースへの移行 Django-Extensions RunScript

例えば

です
# Move Foo table data from one to another
for each_foo in Foo.objects.using("users").all():
  # _create foo instance in customer_data
  foo_obj, status = Foo.objects.using("customers").get_or_create(
                                            foo_name=each_foo.foo_name, 
                                            foo_code=each_foo.foo_code)
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top