문제

다중 데이터베이스 환경에서 모든 데이터를 데이터베이스에서 다른 데이터로 이동하는 방법은 무엇입니까?

설정은 다음과 같습니다.

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'
    }
}
.

이 작업을 수행하는 간단한 솔루션 / 앱이 있습니까?단방향 마이그레이션은 충분하지만 복잡한 외국어와 다수의 연결이있는 수십 가지 모델과 객체가 있으므로 모델과 객체를 반복하고 다른 것으로 절약해도 내 문제가 해결되지 않습니다.

객체 작성이 신호를 사용하여 그행 개체를 만들어 고유 한 키를 망칩니다.

SQL 덤프를 사용하면 백엔드가 다르기 때문에 심지어 사소한 것이 아닙니다.나는 이것을 시도했다, 나는 외래 키를 망치지 않는 내 sqlite3 데이터베이스에서 psql 덤프를 만들 수 없었다.

데이터베이스에서 다른 데이터베이스로 데이터를로드하는 해결책이 필요하지만 신호를 보내지 않고 외래 키와 함께 작동합니다.그러나 나는 이것을하는 것을 찾을 수 없었다.

도움이 되었습니까?

해결책

마침내 나는 이것을 해결할 수 있었다.

i

를 사용하여 테이블을 만들었습니다.
manage.py syncdb --all
manage.py migrate --fake
.

loaddata로 덤프로드는 무결성 문제로 인해 작동하지 않습니다.(예를 들어, 깨진 외래 키 제약 조건, 예 :)

이므로 테이블을 바꿔야했습니다.나는 깨진 제약 조건을 제거한 다음 문제없이 loaddata를 실행할 수 있습니다.

그러나 물론 부부의 제약 조건을 떨어 뜨린 이래로 물론 제 데이터베이스가 아직 고장났습니다.따라서 psql 셸을 사용하여 테이블을 다시 변경해야합니다.

pgadmin은 각각의 제약 조건에 대해 별도로 사용자 친화적 인 인터페이스에 대한 관련 덤프 쿼리를 보여주기 때문에 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