PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

recuperer DLL tables

Technique - php | recuperer DLL tables

Par Jnore le 28/05/2007 - 19:35

Bonjour,

Je souhaite sauvegarder par un script php la structure de ma base de données.
Y a t-il moyen de récupérer la liste des définitions (DDL) de chacune des tables appartenant à ma base?
Je sais que l'on peut le faire sur les vues avec la requĂȘte "SELECT definition FROM pg_views where schemaname='public' ".

Merci pour votre participation.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramÚtres" pour activer vos changements.

A essayer

Jean-Paul Argudo/ = 30 Mai, 2007 - 11:43

Bonjour,

En temps normal pour faire cela, on utilise pg_dump --schema-only pour ne récupérer que le script SQL de création de la base.

Maintenant, je ne suis pas certain de bien comprendre votre question, aussi je vous propose cette requĂȘte SQL Ă  essayer, qui extrait les informations sur les tables:
SELECT
foo.relname as table,
a.attname as colonne,
pg_catalog.format_type(a.atttypid, a.atttypmod) as type,
(SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
FROM pg_catalog.pg_attrdef d
WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef)
as valeur_par_defaut,
a.attnotnull as null_possible,
a.attnum as ordre
FROM pg_catalog.pg_attribute a,
(SELECT
c.oid as id,
c.relname as relname
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid)) foo
WHERE a.attrelid = foo.id
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY foo.relname, a.attnum;

Pouvez-vous l'essayer et nous faire un retour? merci!

--
Jean-Paul ARGUDO
http://dalibo.com | http://dalibo.org


Essai réussi

Jnore/ = 30 Mai, 2007 - 17:54

Merci pour cette requete.
Elle est fonctionnelle.

Je sais pour pg_dump, mais j'aime bien comprendre en profondeur et rĂ©aliser certaines choses moi-mĂȘme.

Autre chose, sur cette requete j'ai toutes les infos pour le schĂ©ma 'public'...Qu'en est-il si je veux ces mĂȘme infos sur d'autres shĂ©ma. J'en ai en tout une dizaine.

Merci.


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.