J'ai créé une table dans postgreSQL. Je veux regarder l'instruction SQL utilisée pour créer la table mais je ne peux pas la comprendre.
Comment obtenir l' create table
instruction SQL pour une table existante dans Postgres via la ligne de commande ou l'instruction SQL?
postgresql
Raja
la source
la source
pg_dump mydb -t mytable --schema-only
.aschema
par le nom de schéma réel de la table à vider. Remplacezatable
par le nom de table réel de la table que vous souhaitez vider.pg_dump mydb -t '"TableName"' --schema-only
- sinon pg_dump ne reconnaîtra pas le nom de la table.Ma solution est de vous connecter à la base de données postgres en utilisant psql avec l'option -E comme suit:
Dans psql, exécutez les commandes suivantes pour voir le sql que postgres utilise pour générer
l'instruction de table de description:
Sur la base du SQL répété après l'exécution de ces commandes de description, j'ai pu rassembler
la fonction plpgsql suivante:
Voici l'utilisation de la fonction:
Et voici l'instruction drop si vous ne voulez pas que cette fonction persiste de façon permanente:
la source
NULL
pour moi ... Et comment est géré le schéma? Doit-il renvoyer des instructions CREATE pour les tables avec le nom spécifié de tous les schémas?Générez l'instruction create table pour une table dans postgresql à partir de la ligne de commande linux:
Cette instruction génère la table create sql pour moi:
Explication:
pg_dump nous aide à obtenir des informations sur la base de données elle-même.
-U
signifie nom d'utilisateur. Mon utilisateur pgadmin n'a pas de mot de passe défini, je n'ai donc pas à saisir de mot de passe. L'-t
option signifie spécifier pour une table.--schema-only
signifie imprimer uniquement les données de la table et non les données de la table. Voici la commande exacte que j'utilise:la source
Si vous souhaitez trouver l'instruction create pour une table sans utiliser pg_dump, cette requête peut fonctionner pour vous (changez 'tablename' avec le nom de votre table):
lorsqu'il est appelé directement depuis psql, il est utile de faire:
De plus, la fonction generate_create_table_statement dans ce fil fonctionne très bien.
la source
pg_dump
. utile tout de même +1Dean Toader Tout simplement excellent! Je modifierais un peu votre code, pour afficher toutes les contraintes dans la table et pour permettre d'utiliser le masque d'expression régulière dans le nom de la table.
Vous pouvez maintenant, par exemple, effectuer la requête suivante
qui se traduit comme ceci:
pour chaque table utilisateur.
la source
La méthode la plus simple à laquelle je peux penser est d'installer pgAdmin 3 (que vous trouverez ici ) et de l'utiliser pour afficher votre base de données. Il générera automatiquement une requête qui créera la table en question.
la source
Si vous voulez faire cela pour différentes tables à la fois, vous avez dû utiliser le commutateur -t plusieurs fois (il m'a fallu un certain temps pour comprendre pourquoi la liste séparée par des virgules ne fonctionnait pas). Il peut également être utile d'envoyer des résultats vers un fichier externe ou un canal vers un serveur PostgreSQL sur une autre machine
la source
Encore plus de modifications basées sur la réponse de @vkkeeper. Ajout de la possibilité d'interroger la table à partir du schéma spécifique.
la source
Voici un peu améliorée version de shekwi de requête .
Il génère la contrainte de clé primaire et est capable de gérer des tables temporaires:
Utilisez le
table_name
paramètre pour spécifier le nom de la table.la source
la source
C'est la variation qui me convient:
pg_dump -U user_viktor -h localhost unit_test_database -t floorplanpreferences_table --schema-only
De plus, si vous utilisez des schémas, vous devrez bien sûr également le spécifier:
pg_dump -U user_viktor -h localhost unit_test_database -t "949766e0-e81e-11e3-b325-1cc1de32fcb6".floorplanpreferences_table --schema-only
Vous obtiendrez une sortie que vous pourrez utiliser pour recréer la table, exécutez simplement cette sortie dans psql.
la source
Une solution simple, en pur SQL unique. Vous avez l'idée, vous pouvez l'étendre à plus d'attributs que vous aimez montrer.
Production:
la source
Voici une seule instruction qui générera le DDL pour une seule table dans un schéma spécifié, y compris les contraintes.
la source
Comme les autres réponses mentionnées, il n'y a pas de fonction intégrée qui fait cela.
Voici une fonction qui tente d'obtenir toutes les informations qui seraient nécessaires pour répliquer la table - ou pour comparer déployé et archivé dans ddl.
Cette fonction génère:
exemple
produit
la source
Dans la base de données pgadminIII >> schémas >> tables >> clic droit sur 'Votre table' >> scripts >> 'Sélectionnez n'importe lequel (Créer, Insérer, Mettre à jour, Supprimer ..)'
la source
Voici une requête avec quelques modifications,
la source