web-dev-qa-db-fra.com

Afficher uniquement les noms de table avec psql

Comment puis-je obtenir les noms des tables sans en-tête ni pied de page ou quoi que ce soit d'autre à partir d'une base de données Postgres spécifiée avec psql? Autrement dit, si j'ai des tables appelées "table1" et "table2" alors la sortie sera:

table1
table2

et seulement ça. J'ai essayé différentes combinaisons de choses, mais il semble que cela devrait être beaucoup plus facile que je ne le fais.

7
seumasmac

Dans PostgreSQL (comme décrit dans la documentation, The Information Schema ):

SELECT table_name
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema='public';

Pour MySQL, vous auriez besoin de table_schema='dbName' et pour MSSQL, supprimez cette condition.

Notez que "seules les tables et les vues sont affichées que l'utilisateur actuel a accès à". De plus, si vous avez accès à de nombreuses bases de données et que vous souhaitez limiter le résultat à une certaine base de données , vous pouvez y parvenir en ajoutant la condition AND table_catalog='yourDatabase' (dans PostgreSQL).

Si vous souhaitez également vous débarrasser de l'en-tête affichant les noms des lignes et le pied de page indiquant le nombre de lignes, vous pouvez soit démarrer le psql avec l'option de ligne de commande -t (court pour --tuples-only) ou vous pouvez basculer le paramètre dans la ligne de commande de psql par \t (court pour \pset tuples_only). Cela peut être utile, par exemple, lorsque vous redirigez la sortie vers une autre commande avec \g [ |command ].

10
Esa Jokinen