[postgresql] Postgres의 한 데이터베이스에서 다른 데이터베이스로 테이블 복사

Postgres의 한 데이터베이스에서 다른 데이터베이스로 전체 테이블을 복사하려고합니다. 어떤 제안?



답변

테이블을 추출하여 대상 데이터베이스에 직접 파이프하십시오.

pg_dump -t table_to_copy source_db | psql target_db

참고 : 다른 데이터베이스에 이미 테이블이 설정되어 있으면 -a플래그를 사용하여 데이터 만 가져와야합니다. 그렇지 않으면 “메모리 부족”과 같은 이상한 오류가 표시 될 수 있습니다.

pg_dump -a -t my_table my_db | psql target_db


답변

pgAdmin II에서 백업 기능을 사용할 수도 있습니다. 다음 단계를 따르십시오.

  • pgAdmin에서 이동할 테이블을 마우스 오른쪽 버튼으로 클릭하고 “백업”을 선택하십시오.
  • 출력 파일의 디렉토리를 선택하고 형식을 “일반”으로 설정하십시오.
  • “덤프 옵션 # 1″탭을 클릭하고 “데이터 만”또는 “스키마 만”을 선택하십시오 (작업에 따라 다름)
  • 쿼리 섹션에서 “열 삽입 사용”및 “사용자 삽입 명령”을 클릭하십시오.
  • “백업”버튼을 클릭하십시오. .backup 파일로 출력
  • 메모장을 사용하여이 새 파일을 엽니 다. 테이블 / 데이터에 필요한 삽입 스크립트가 표시됩니다. 이를 pgAdmin의 새 데이터베이스 sql 페이지에 복사하여 붙여 넣습니다. pgScript로 실행-쿼리-> pgScript F6으로 실행

잘 작동하며 한 번에 여러 테이블을 수행 할 수 있습니다.


답변

dblink를 사용하는 것이 더 편리합니다!

truncate table tableA;

insert into tableA
select *
from dblink('dbname=postgres hostaddr=xxx.xxx.xxx.xxx dbname=mydb user=postgres',
            'select a,b from tableA')
       as t1(a text,b text);


답변

두 서버 모두에 연결된 Linux 호스트에서 psql 사용

( export PGPASSWORD=password1
  psql -U user1 -h host1 database1 \
  -c "copy (select field1,field2 from table1) to stdout with csv" ) \
|
( export PGPASSWORD=password2
  psql -U user2 -h host2 database2 \
   -c "copy table2 (field1, field2) from stdin csv" )


답변

첫 번째 dblink 설치

그런 다음 다음과 같은 작업을 수행합니다.

INSERT INTO t2 select * from
dblink('host=1.2.3.4
 user=*****
 password=******
 dbname=D1', 'select * t1') tt(
       id int,
  col_1 character varying,
  col_2 character varying,
  col_3 int,
  col_4 varchar
);


답변

pg_dump를 사용하여 테이블 데이터를 덤프 한 다음 psql로 복원하십시오.


답변

원격 서버가 둘 다 있으면 다음을 수행 할 수 있습니다.

pg_dump -U Username -h DatabaseEndPoint -a -t TableToCopy SourceDatabase | psql -h DatabaseEndPoint -p portNumber -U Username -W TargetDatabase

이미 존재하는 스키마가있는 경우 언급 된 소스 데이터베이스 테이블을 동일한 대상 데이터베이스 테이블로 복사합니다.