안녕하세요. DB 관련된 지식이 거의 없어서.. 그런지.. 무자게 헤매고 있습니다.
그래서 도움을 요청합니다..
상황은 다음과 같습니다.
1. 다음과 같은 방법으로 table 의 데이터만 백업합니다.
COPY (SELECT * from aTable where id < 10) TO stdout;
2. id 는 primary key 이고 serial 입니다.
3. 백업된 파일에 다음과 같이 데이터가 있습니다.
COPY aTable FROM stdin;
2 abcdefg TEST
3 sfgvqfa
7 fd2sd
9 dafadfadfdasfa
\.
4. 이것을 복원을 할 때가 문제 입니다. 백업 했던 내용이 aTable 내에 있을 수도 있고 없을수도 있습니다.
복원을 할 때, 만약 백업된 내용이 aTable 내에 존재하고 있다면 id가 겹치게 발생하여
duplicate key value violates unique constraint 에러가 발생합니다.
위에서 id 가 2, 3, 7, 9 인 것이 백업이 되었는데, 만약 aTable 에 3, 7 이 삭제가 되었다면
id가 3, 7 인 것만 복원을 하고 싶습니다.
5. 원하는 방향은..
COPY aTable FROM stdin; 에서 어떤 조건을 추가 하여 aTable 에 id 가 2, 3, 7, 9 인 것이 존재하는지 확인해서
2, 9는 존재하고 있기 때문에 copy 하지 않고, 3, 7에 대해서만 복원을 할 수 있을까 .. 입니다...
지식이 별로 없어서... 우문 일 수 있겠지만.. 현답 부탁드립니다.
감사합니다.
|