[sql] 테이블 구조를 새 테이블로 복사

모든 키와 제약 조건을 포함하여 데이터없이 테이블 구조를 새 테이블로 복사하는 방법이 있습니까?



답변

간단한 스키마 복사의 경우 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”가 됨).

질문은 오히려 이것이 왜 필요한가요? 다양한 목적을 위해 다른 기술을 사용하기 때문입니다.


답변

테이블을 완전히 복사하려면 TABLE 명령을 사용하는 짧은 형식을 사용할 수도 있습니다.

CREATE TABLE films2 AS
    TABLE films
    WITH NO DATA;

자세한 내용은 여기


답변

pgAdmin을 살펴보십시오 -원하는 작업을 수행하는 가장 쉬운 방법입니다.
테이블, Scripts-Create를 마우스 오른쪽 버튼으로 클릭합니다.


답변

어때

CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)

postgresql.org 답변


답변