2016-06-02 3 views
1

동일한 서버에 두 개의 데이터베이스가 있고 첫 번째 데이터베이스의 테이블에서 두 번째 데이터베이스의 테이블로 데이터를 복사해야합니다. 몇 가지주의 사항 :한 데이터베이스에서 다른 데이터베이스로 테이블 데이터 복사

  • 두 테이블이 이미 존재 : 열 이름이 다른
  • (예. 나는 테이블에 처음 난 그냥 기존 테이블에 데이터를 추가해야 '- 복사'를 드롭하지 않아야합니다). 그래서 복사 할 열을 정확하게 지정해야하고, 그들의 이름은 내가에만이 찾을 수 있었다 뒷조사 후 새 테이블

에서 무엇 :

pg_dump -t tablename dbname | psql otherdbname 

을하지만 위의 명령 아무튼 내가 열거 한 두 가지주의 사항을 고려하지 않는다.

+0

외국 데이터 래퍼를 사용하여 열을 대상으로 a 및 소스 데이터베이스에서 bxy있는 테이블 t를 들어 –

답변

0

저는 이것을 위해 ETL 도구를 사용합니다. 사용할 수있는 무료 도구가 있으며 열 이름을 변경하는 데 도움이되며 광범위하게 사용되고 테스트됩니다. 대부분의 도구는 Windows 작업 스케줄러 또는 cron과 같은 외부 스케줄러가 필요한 모든 시간 계획에 따라 변환을 실행할 수 있도록합니다.

저는 개인적으로 과거에 비슷한 작업을 위해 Pentaho PDI을 사용했으며 항상 저에게 잘 맞았습니다. 귀하의 요구 사항에 대해 먼저 원본 데이터베이스에서 테이블 데이터를로드하고 "값 선택"단계에서 열 이름을 수정 한 다음 "truncate"옵션을 사용하여 대상 테이블에 값을 삽입하는 단일 변환을 만듭니다 목표 테이블의 기존 행 테이블이 너무 커서 매번 다시 채울 수없는 경우 델타로드 절차를 알아야합니다.

psql -d sourcedb -c "copy t(a,b) to stdout" | psql -d targetdb -c "copy t(x,y) from stdin" 
2

,
관련 문제