모든 키와 제약 조건을 포함하여 데이터없이 테이블 구조를 새 테이블로 복사하는 방법이 있습니까?
답변:
간단한 스키마 복사의 경우 like 절을 사용하십시오.
CREATE TABLE new_table_name ( like old_table_name including all)
음, SQL로 얻을 수있는 가장 가까운 것은 다음과 같습니다.
create table new (
like old
including defaults
including constraints
including indexes
);
그러나 모든 것을 복사하지는 않습니다. 누락 된 가장 중요한 것은 FOREIGN KEY입니다. 또한-트리거도 복사되지 않습니다. 다른 것들에 대해서는 확실하지 않습니다.
또 다른 방법은 테이블 구조를 덤프하고 덤프에서 이름을 변경 한 다음 다시로드하는 것입니다.
pg_dump -s -t old databases | sed 's/old/new/g' | psql
그러나 이러한 단순한 sed는 다른 위치에서도 이전 버전으로 변경된다는 점에 유의하십시오 (예를 들어 "is_scolded"라는 테이블 열에있는 경우 "is_scnewed"가 됨).
질문은 오히려 이것이 왜 필요한가요? 다양한 목적을 위해 다른 기술을 사용하기 때문입니다.
including constraints
PostgreSQL의 8.3에서 작동하지 않습니다
pgAdmin을 살펴보십시오 -원하는 작업을 수행하는 가장 쉬운 방법입니다.
테이블, Scripts-Create를 마우스 오른쪽 버튼으로 클릭합니다.
CREATE TABLE new (like old, extra_column text);