python 스크립트 (psycopg 연결)를 사용하여 PostgreSQL DB에 대량 삽입을 시도하고 있습니다. 이제 스크립트에는 기본 열에 복제본이있어 전체 스크립트를 중단하고 롤백합니다. 그러나, 내가 원하는 것은 중복을 건너 뛰고 실행을 계속하는 것입니다. 내 스크립트오류가 있어도 INSERT 스크립트를 계속 실행하십시오 - Python 스크립트를 사용하는 PostgreSQL
begin transaction;
create table t1 (c1 float, unique(c1));
insert into t1 values (1);
insert into t1 values (2);
insert into t1 values (1); --the script aborts and rolls back
commit;
나는 주위를 둘러 보았다 및 ON_ERROR_ROLLBACK을 설정하는 데 도움이 발견 한 다음과 같이 보입니다. 하지만 psql 명령 줄에서만 설정할 수 있습니다.
파이썬 스크립트 내부에서 ON_ERROR_ROLLBACK을 사용할 수 있습니까? 아니면 다른 대안이 있습니까?
미리 감사드립니다.
그리고 plpgsql http://www.postgresql.org/docs/9.4/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING에서 트래핑 오류 " 무시 무시한 삽입 "은 무엇을해야합니까? –
insert 문을 포함하는 스크립트는 자동 생성되며 특정 오류 레코드가 중복 된 것으로 간주됩니다. 따라서 삽입 할 때 중복을 무시하려고합니다. Btw, INSERT IGNORE는 내가 원하는 것은 아니다. (PostgreSQL이 아닌 MySQL을 위해서). 세션에 대해 ON_ERROR_ROLLBACK을 설정하는 옵션과 같이 INSERT 문을 수정하지 않고도 중복을 무시하고 싶습니다. 하지만 파이썬 스크립트에서 어떻게해야하는지 정확히 모르겠습니다. – borarak
발견 : http://stackoverflow.com/questions/1009584/how-to-emulate-insert-ignore-and-on-duplicate-key-update-sql-merge-with-po. – KriszDev