2013-06-13 1 views
0

가장 빠른 방법 : 테이블에 인덱스가되어 있기 때문에대량 삽입 테이블 B의 동일한 구조를 가진 테이블 A에 삽입 할

INSERT INTO A 
SELECT * FROM B 

나는 테이블의 이름을 바꿀 수없는 경우 쿼리가 읽기 카탈로그 없이는 알 수없고 테이블 B를 테이블 A와 동일하게 수정하는 동적 스크립트를 만드는 것은 불가능합니다. 또한 테이블 A에는 삭제하기 어려운 것보다 몇 가지 뷰가 있습니다.

데이터베이스 사용자가 파일 및 디렉토리에 대한 권한이 없으므로 COPY 명령을 사용하여 COPY TO 및 다음 COPY FROM 명령을 사용할 수 없습니다.

COPY A FROM (SELECT * FROM B) 할 방법이 있습니까?

PostgreSQL 버전 9.2 당신이 필요로하는 모든 사용자들은

INSERT INTO A 
SELECT * FROM B; 

:

+1

이'INSERT'에 어떤 문제가 있습니까 : A는 아직 존재하지 않는 경우

지금 당신이 할 수 있습니까? – Yang

+0

http://www.postgresql.org/docs/current/static/populate.html –

+1

@Yang 2 백만 레코드 (약 40 분)에 많은 시간이 걸립니다. –

답변

0

귀하의 질문은 정답을 말한다.

CREATE TABLE A (LIKE B INCLUDING ALL); 
INSERT INTO A SELECT * FROM B;