Quel est l'équivalent show tables
(de MySQL) dans PostgreSQL?
Quel est l'équivalent show tables
(de MySQL) dans PostgreSQL?
Réponses:
Depuis l' psql
interface de ligne de commande,
Choisissez d'abord votre base de données
\c database_name
Ensuite, cela montre toutes les tables du schéma actuel:
\dt
Par programmation (ou depuis l' psql
interface aussi, bien sûr):
SELECT * FROM pg_catalog.pg_tables;
Les tables système vivent dans la pg_catalog
base de données.
\l
est l'équivalent de show databases
dans MySQL. dt
≃ show tables
et l
≃show databases
\dt
est très utile. Celui- pg_catalog.pg_tables
ci l'est beaucoup moins, car il semble regrouper les tables internes avec celles créées par l'utilisateur pour la base de données à laquelle vous vous connectez.
psql my_db_name
doit être exécuté \dt
pour fonctionner. Lorsque j'ai couru psql
sans nom de base de données, j'ai reçu un message "Aucune relation trouvée"
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
choisir votre base de données.
Connectez-vous en tant que superutilisateur:
sudo -u postgres psql
Vous pouvez lister toutes les bases de données et tous les utilisateurs par \l
commande, (lister les autres commandes par\?
).
Maintenant, si vous voulez voir d'autres bases de données, vous pouvez changer d'utilisateur / base de données par \c
commande comme \c template1
, \c postgres postgres
et utiliser \d
, \dt
ou \dS
voir tables / vues / etc.
(Pour être complet)
Vous pouvez également interroger le schéma d'informations (standard SQL) :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Vous pouvez utiliser le terminal interactif Psql de PostgreSQL pour afficher des tableaux dans PostgreSQL.
1. Démarrez Psql
Habituellement, vous pouvez exécuter la commande suivante pour entrer dans psql:
psql DBNAME USERNAME
Par exemple, psql template1 postgres
Une situation que vous pourriez avoir est: supposez que vous vous connectez en tant que root et que vous ne vous souvenez pas du nom de la base de données. Vous pouvez simplement entrer d'abord dans Psql en exécutant:
sudo -u postgres psql
Dans certains systèmes, la commande sudo n'est pas disponible, vous pouvez plutôt exécuter l'une des commandes ci-dessous:
psql -U postgres
psql --username=postgres
2. Montrer les tableaux
Maintenant, dans Psql, vous pouvez exécuter des commandes telles que:
\?
liste toutes les commandes\l
liste des bases de données\conninfo
afficher des informations sur la connexion actuelle\c [DBNAME]
se connecter à une nouvelle base de données, par exemple, \c template1
\dt
lister les tables du schéma public\dt <schema-name>.*
lister les tableaux de certains schémas, par exemple, \dt public.*
\dt *.*
liste des tableaux de tous les schémasSELECT * FROM my_table;
(Remarque: une instruction doit se terminer par un point-virgule ;
)\q
quitter psqlL'exécution de psql avec l'indicateur -E fera écho à la requête utilisée en interne pour implémenter \ dt et similaire:
sudo -u postgres psql -E
postgres=# \dt
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
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 <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
**************************
Connectez-vous en tant que superutilisateur pour pouvoir vérifier toutes les bases de données et leurs schémas: -
sudo su - postgres
Ensuite, nous pouvons accéder au shell postgresql en utilisant la commande suivante: -
psql
Vous pouvez maintenant vérifier toute la liste des bases de données en utilisant la commande suivante: -
\l
Si vous souhaitez également vérifier la taille des bases de données, utilisez: -
\l+
Appuyez q
pour revenir.
Une fois que vous avez trouvé votre base de données, vous pouvez maintenant vous connecter à cette base de données à l'aide de la commande suivante: -
\c database_name
Une fois connecté, vous pouvez vérifier les tables ou le schéma de la base de données en: -
\d
Maintenant, pour revenir à l'utilisation du shell: -
q
Maintenant, pour voir les détails d'une certaine table, utilisez: -
\d table_name
Pour revenir à la presse postgresql_shell \q
.
Et pour revenir au terminal, appuyez sur exit
.
Si vous voulez seulement voir la liste des tableaux que vous avez créés, vous pouvez seulement dire:
\dt
Mais nous avons également PATTERN
ce qui vous aidera à personnaliser les tableaux à afficher. Pour afficher tous les pg_catalog
schémas, y compris , vous pouvez ajouter *
.
\dt *
Si tu fais: \?
\ dt [S +] [PATTERN] list tables
utiliser seulement voir une table
=> \dt
si vous voulez voir les tables de schéma
=>\dt+
si vous voulez voir des tables de schéma spécifiques
=>\dt schema_name.*
+
avec S
. Ce dernier (la lettre) montre des tables de schéma. Le +
montre simplement des informations supplémentaires.
Connectez-vous d'abord à la base de données à l'aide de la commande suivante
\c database_name
Et vous verrez ce message - You are now connected to database database_name
. Et ils exécutent la commande suivante
SELECT * FROM table_name;
Dans nom_base_de_données et nom_table, mettez à jour simplement avec votre nom de base de données et de table
Si vous utilisez pgAdmin4 dans PostgreSQL, vous pouvez l'utiliser pour afficher les tables de votre base de données:
select * from information_schema.tables where table_schema='public';
Notez que \dt
seul listera les tables dans le public schéma de la base de données que vous utilisez. J'aime garder mes tables dans des schémas séparés, donc la réponse acceptée n'a pas fonctionné pour moi.
Pour répertorier toutes les tables d' un schéma spécifique , je devais:
1) Connectez-vous à la base de données souhaitée:
psql mydb
2) Spécifiez le nom du schéma pour lequel je veux voir les tables après la \dt
commande, comme ceci:
\dt myschema.*
Cela me montre les résultats qui m'intéressent:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
select
*
from
pg_catalog.pg_tables
where
schemaname != 'information_schema'
and schemaname != 'pg_catalog';
\ dt (non * requis) - listera toutes les tables d'une base de données existante à laquelle vous êtes déjà connecté. A noter également:
\ d [nom_table] - affichera toutes les colonnes d'une table donnée, y compris les informations de type, les références et les contraintes de clé.
Utilisation de psql : \ dt
Ou:
SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = 'r'
AND relname NOT LIKE 'pg_%'
ORDER BY 1
Tout d'abord, vous devez vous connecter à votre base de données comme
ma base de données est ubuntu
utilisez cette commande pour vous connecter
\c ubuntu
Ce message montrera
"Vous êtes maintenant connecté à la base de données" ubuntu "en tant qu'utilisateur" postgres "."
Maintenant
Exécutez cette commande pour afficher toutes les tables qu'il contient
\d+
La façon la plus simple de répertorier toutes les tables en ligne de commande est, à mon goût:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Pour une base de données donnée, ajoutez simplement le nom de la base de données:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Cela fonctionne sur Linux et Windows.
comme oneliner rapide
# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
ou si vous préférez une sortie json multi-liner beaucoup plus claire:
IFS='' read -r -d '' sql_code <<"EOF_CODE"
select array_to_json(array_agg(row_to_json(t))) from (
SELECT table_catalog,table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name ) t
EOF_CODE
psql -d postgres -t -q -c "$sql_code"|jq
Pour afficher les tables étrangères dans psql, exécutez \dE
Vous pouvez d'abord vous connecter à votre base de données postgres en utilisant postgre.app sur mac ou en utilisant postico. Exécutez la commande suivante:
psql -h localhost -p port_number -d database_name -U user_name -W
puis vous entrez votre mot de passe, cela devrait donner accès à votre base de données