2011-08-22 5 views
2

Je migre une base de données de sqlite3 à postgres et je me demande s'il y a de courts tutoriels qui peuvent m'apprendre la nouvelle syntaxe..schema pour postgres

En outre, en tant que question à court terme, comment puis-je voir le schéma d'une table postgres qui est équivalent à .schema dans sqlite?

Répondre

3

Vous pouvez utiliser \d à l'intérieur psql:

=> \? 
... 

Informational 
    (options: S = show system objects, + = additional detail) 
    \d[S+]     list tables, views, and sequences 
    \d[S+] NAME   describe table, view, sequence, or index 
... 

=> \d people 
              Table "public.people" 
     Column   |   Type    |      Modifiers      
------------------------+-----------------------------+----------------------------------------------------- 
id      | integer      | not null default nextval('people_id_seq'::regclass) 
created_at    | timestamp without time zone | not null 
updated_at    | timestamp without time zone | not null 
... 
Indexes: 
    "people_pkey" PRIMARY KEY, btree (id) 
... 
Check constraints: 
    "chk_people_latlng" CHECK ((lat IS NULL) = (lng IS NULL)) 
.... 

Vous pouvez également autour de la racine dans le information_schema si vous n'êtes pas à l'intérieur psql.

+0

Il semble que '.schema' génère une instruction CREATE pour la table. '\ d' n'est pas vraiment un équivalent. –

+0

@Frank: "comment voir le schéma", mais peu importe. –

+1

Si quelqu'un apprend postgres et essaye d'obtenir "la nouvelle syntaxe", "\ d" est plutôt dans les limites. Les commandes point sqlite sont une grande partie de son interface shell, et les commandes meta backslash sont les analogues de shell psql. De plus '\?', La deuxième ligne de cette réponse, est, pour reprendre une phrase, un "petit tutoriel qui peut m'apprendre la nouvelle syntaxe". – unmounted

5

Vous pouvez utiliser l'utilitaire de ligne de commande pg_dump, i.e. .:

pg_dump --table <table_name> --schema-only <database_name> 

En fonction de votre environnement, vous avez probablement besoin de spécifier les options de connexion (-h, -p, -U commutateurs).

1

Si vous utilisez psql (et \ d ...), vous pouvez

\set ECHO_HIDDEN 

pour voir le sql pour les requêtes que psql est en cours d'exécution pour mettre ensemble le \ d ... output-- Ceci est utile non seulement en tant qu'exemples de syntaxe SQL, mais il vous montre également où trouver et comment se connecter les métadonnées de la base de données.

Pour obtenir le nom de schéma pour une table, vous pouvez:

SELECT n.nspname AS schema_name, 
     c.relname AS table_name 
FROM pg_catalog.pg_class c 
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
WHERE c.relname = '<table_name>' 
; 

(ne savent pas comment cela se compare à .schema)