329 Stimmen

Wie generiert man die SQL-Anweisung "create table" für eine bestehende Tabelle in postgreSQL

Ich habe eine Tabelle in postgreSQL erstellt. Ich möchte mir die SQL-Anweisung ansehen, die zum Erstellen der Tabelle verwendet wurde, kann sie aber nicht herausfinden.

Wie erhalte ich die create table SQL-Anweisung für eine bestehende Tabelle in Postgres über Kommandozeile oder SQL-Anweisung?

4voto

Bharti Punkte 41

Wenn Sie PgAdmin4 haben, dann öffnen Sie es. Gehen Sie zu Ihrer Datenbank--> Schema---> Tabelle--> Rechtsklick auf den Tabellennamen, dessen Skript Sie erstellen möchten---> Skripte---> SCRIPT ERSTELLEN

4voto

yallie Punkte 1700

Hier ist eine etwas verbesserte Version von shekwi 's Abfrage .
Es erzeugt die Primärschlüssel-Beschränkung und kann mit temporären Tabellen umgehen:

with pkey as
(
    select cc.conrelid, format(E',
    constraint %I primary key(%s)', cc.conname,
        string_agg(a.attname, ', ' 
            order by array_position(cc.conkey, a.attnum))) pkey
    from pg_catalog.pg_constraint cc
        join pg_catalog.pg_class c on c.oid = cc.conrelid
        join pg_catalog.pg_attribute a on a.attrelid = cc.conrelid 
            and a.attnum = any(cc.conkey)
    where cc.contype = 'p'
    group by cc.conrelid, cc.conname
)
select format(E'create %stable %s%I\n(\n%s%s\n);\n',
    case c.relpersistence when 't' then 'temporary ' else '' end,
    case c.relpersistence when 't' then '' else n.nspname || '.' end,
    c.relname,
    string_agg(
        format(E'\t%I %s%s',
            a.attname,
            pg_catalog.format_type(a.atttypid, a.atttypmod),
            case when a.attnotnull then ' not null' else '' end
        ), E',\n'
        order by a.attnum
    ),
    (select pkey from pkey where pkey.conrelid = c.oid)) as sql
from pg_catalog.pg_class c
    join pg_catalog.pg_namespace n on n.oid = c.relnamespace
    join pg_catalog.pg_attribute a on a.attrelid = c.oid and a.attnum > 0
    join pg_catalog.pg_type t on a.atttypid = t.oid
where c.relname = :table_name
group by c.oid, c.relname, c.relpersistence, n.nspname;

Verwenden Sie table_name um den Namen der Tabelle anzugeben.

3voto

user3662456 Punkte 257
pg_dump -h XXXXXXXXXXX.us-west-1.rds.amazonaws.com -U anyuser -t tablename -s

3voto

Sandy Simonton Punkte 586

Das ist die Variante, die bei mir funktioniert:

pg_dump -U user_viktor -h localhost unit_test_database -t floorplanpreferences_table --schema-only

Wenn Sie Schemata verwenden, müssen Sie diese natürlich ebenfalls angeben:

pg_dump -U user_viktor -h localhost unit_test_database -t "949766e0-e81e-11e3-b325-1cc1de32fcb6".floorplanpreferences_table --schema-only

Sie erhalten eine Ausgabe, die Sie verwenden können, um die Tabelle erneut zu erstellen, indem Sie diese Ausgabe in psql ausführen.

2voto

Nestor Milyaev Punkte 4616

Sie können auch ein kostenloses DB-Verwaltungstool wie DBeaver verwenden, mit dem Sie die DDL für die Tabellen anzeigen können, hier ist ein Beispiel:

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X