Existe-t-il un équivalent de MySQL SHOW CREATE TABLE
dans Postgres? Est-ce possible? Si non, quelle est la meilleure solution?
J'ai besoin de cette déclaration car je l'utilise pour créer la table sur un serveur distant (via WCF).
mysql
postgresql
sql
vlebar
la source
la source
Réponses:
Vous pouvez essayer de tracer dans le fichier journal PostgreSQL ce que fait réellement "pg_dump -t table -s". Ensuite, vous pouvez utiliser la même méthode pour écrire votre propre fonction SQL.
la source
-E
option de tracer ce qui se passe en arrière - plan lorsque vous exécutez unepsql
commande --E: will describe the underlaying queries of the \ commands (cool for learning!)
- HTH!pg_dump:
ou utilisez les outils de l’interface graphique de PostgreSQL (pgAdmin, phpPgAdmin, etc.)
la source
--schema-only
a exactement cet objectif: Afficher les instructions SQL pour créer le schéma / la table. Vous pouvez ensuite alimenter cette sortie dans votre programme C #..tar
, récupérez lerestore.sql
fichier de l'archive. Il a toutes les déclarations de création.En ligne de commande (
psql
), vous pouvez exécuter:\d <table name>
pour répertorier toutes les colonnes, leurs types et leurs index.la source
En vous appuyant sur la première partie de la réponse de @ CubicalSoft, vous pouvez ajouter la fonction suivante, qui devrait fonctionner pour des tables simples (suppose le schéma par défaut "public" et omet les contraintes, les index et les types de données définis par l'utilisateur, etc.). @RJS answer est le seul moyen de le faire correctement pour le moment; c'est quelque chose qui devrait être intégré à psql!
la source
Je me rends compte que je suis un peu en retard pour cette soirée, mais comme c'était le premier résultat de ma recherche sur Google, je me suis dit que je répondrais avec ce que j'ai proposé.
Vous pouvez aller assez loin vers une solution avec cette requête pour obtenir les colonnes:
Et puis cette requête pour les index les plus courants:
Ensuite, il suffit de construire la ou les chaînes de requête dans le bon format.
la source
Comme indiqué dans https://serverfault.com/a/875414/333439 , il est possible d'afficher la structure de la table dans la base de données avec la
\d <table>
méta-commande inpsql
. Si vous souhaitez afficher la requête utilisée dans la méta-commande, vous pouvez utiliser la commandepsql -E
. Comme décrit dans la page de manuel, le-E
commutateur renvoie les\d
requêtes de méta-commandes. Donc, vous pouvez lancerpsql -E
, vous pouvez afficher la structure de la table avec la\d <table>
méta-commande, et, en fonction du-E
commutateur, vous pouvez afficher la requête générée pour décrire la structure de la tablela source
Dans pgAdmin 4 , trouvez simplement la table dans l'arborescence à gauche, par exemple:
Lorsque la table est sélectionnée, ouvrez l' onglet SQL à droite. Il affiche le
CREATE TABLE
pour la table sélectionnée.la source
Postgres extension ddlx ( https://github.com/lacanoid/pgddl ) fait exactement cela, et plus encore.
la source