Czy istnieje sposób na skopiowanie struktury tabeli do nowej tabeli bez danych, w tym wszystkich kluczy i ograniczeń?
sql
postgresql
Alex S.
źródło
źródło
CREATE TABLE new (like old, extra_column text);
Cóż, najbliższy SQL to:
create table new ( like old including defaults including constraints including indexes );
Ale nie skopiuje wszystkiego. Najważniejsze rzeczy, których brakuje, to KLUCZE OBCE. Również - wyzwalacze również nie są kopiowane. Nie jestem pewien innych rzeczy.
Innym sposobem jest zrzucenie struktury tabeli, zmiana jej nazwy w dump i ponowne załadowanie:
Ale uwaga, taki uproszczony sed zmieni się również ze starego na nowy w innych miejscach (na przykład jeśli masz w swojej tabeli kolumnę o nazwie „is_scolded”, stanie się ona „is_scnewed”).
Pytanie tak naprawdę brzmi raczej: po co ci to potrzebne - ponieważ do różnych celów użyłbym różnych technik.
źródło
including constraints
nie działa na PostgreSQL 8.3Aby całkowicie skopiować tabelę, można również użyć krótkiego formularza za pomocą polecenia TABELA:
CREATE TABLE films2 AS TABLE films WITH NO DATA;
Więcej szczegółów tutaj
źródło
Spójrz na pgAdmin - zdecydowanie najłatwiejszy sposób robienia tego, co chcesz.
Kliknij prawym przyciskiem myszy tabelę, Skrypty - Utwórz.
źródło
Co powiesz na
CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)
odpowiedź postgresql.org
źródło