2017-11-06 15 views
0

현재이 고객의 기본 구조에서 새 데이터베이스를 만들 수있는 방법으로 고객 데이터베이스 중 하나를 덤핑하려고합니다. 그들의 개인 데이터를 따라-exclude-table-data를 사용하여 pg_dump에서 외래 키 제약 조건 적용

지금까지 pg_dump--exclude_tableexclude-table-data 명령을 결합하여 성공 했으므로이 작업에 필요한 데이터 만 가져올 수있었습니다.

그러나 내가 가지고 있어야하는 데이터를 참조하는 다른 줄과 함께 남겨진 일부 데이터를 참조하는 줄이 혼합되어있는 테이블이 몇 개 있는데이 때문에 복원 작업 중에 몇 가지 문제가 발생합니다. 특히 덤프가이 테이블의 특정 열에 대해 FOREIGN KEY 제약 조건을 적용하려고하면이 테이블의 데이터를 가져 오지 않기 때문에 각 외부 테이블에 일치하는 데이터가없는 키가있는 일부 줄이 있기 때문에 실패합니다!

덤프가 완료된 후 데이터베이스에 로그인 할 수 있음을 알고 더 이상 존재하지 않는 데이터를 참조하는 행을 삭제하고 제한 조건을 직접 만들지 만 가능한 한 프로세스를 자동화하고 싶습니다. pg_dump 또는 pg_restore (또는 다른 프로그램)이 테이블 B를 참조하고 테이블 B의 데이터가 백업에서 제외 된 경우 테이블 A의 행을 가져 오지 않도록 지시 할 수 있습니까? 또는 Postgres에게 테이블의 데이터를 가져 오기 전에 특정 외래 키를 활성화하고 싶다고 말하고 싶습니까?

참고로, 저는 PostgreSQL 9.2를 HREL 7 서버에서 사용하고 있습니다.

답변

0

데이터베이스 덤프를 복원 할 때 외래 키 검사를 비활성화하면 어떻게됩니까? 그 후에 참조하는 표에서 외로운 행을 제거하십시오.

그런데 데이터베이스 스키마를 수정하여 잘못된 튜플이 데이터베이스에 삽입되지 않도록하는 것이 좋습니다.