Что эквивалентно show tables
(из MySQL) в PostgreSQL?
Что эквивалентно show tables
(из MySQL) в PostgreSQL?
Ответы:
Из psql
интерфейса командной строки
Сначала выберите вашу базу данных
\c database_name
Затем это показывает все таблицы в текущей схеме:
\dt
Программно (или из psql
интерфейса тоже, конечно):
SELECT * FROM pg_catalog.pg_tables;
Системные таблицы живут в pg_catalog
базе данных.
\l
эквивалент show databases
в MySQL. dt
≃ show tables
и l
≃show databases
\dt
это очень полезно. Это pg_catalog.pg_tables
намного меньше, поскольку кажется, что внутренние таблицы объединяются с созданными пользователем таблицами для любой базы данных, к которой вы подключены.
psql my_db_name
должен быть запущен, \dt
чтобы работать. Когда я бежал psql
без имени базы данных, я получал сообщение «Не найдено ни одного отношения»
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
выбрать базу данных.
Войти как суперпользователь:
sudo -u postgres psql
Вы можете перечислить все базы данных и пользователей по \l
команде (список других команд по \?
).
Теперь, если вы хотите увидеть другие базы данных, вы можете изменить пользователя / базу данных с помощью \c
команды, например \c template1
, \c postgres postgres
и использовать \d
, \dt
или \dS
для просмотра таблиц / представлений / и т.д.
(Для полноты)
Вы также можете запросить (стандарт SQL) информационную схему :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Вы можете использовать интерактивный терминал PostgreSQL Psql для отображения таблиц в PostgreSQL.
1. Запустите Psql
Обычно вы можете запустить следующую команду для входа в psql:
psql DBNAME USERNAME
Например, psql template1 postgres
Вы можете столкнуться с одной ситуацией: предположим, что вы вошли в систему как root, и вы не помните имя базы данных. Вы можете просто войти сначала в Psql, запустив:
sudo -u postgres psql
В некоторых системах команда sudo недоступна, вместо этого вы можете запустить любую из следующих команд:
psql -U postgres
psql --username=postgres
2. Показать таблицы
Теперь в Psql вы можете запускать такие команды, как:
\?
перечислить все команды\l
список баз данных\conninfo
отображать информацию о текущем соединении\c [DBNAME]
подключиться к новой базе данных, например, \c template1
\dt
список таблиц общедоступной схемы\dt <schema-name>.*
список таблиц определенной схемы, например, \dt public.*
\dt *.*
список таблиц всех схемSELECT * FROM my_table;
(Примечание: оператор должен заканчиваться точкой с запятой ;
)\q
выйти из PSQLЗапуск psql с флагом -E отобразит запрос, используемый внутри для реализации \ dt, и тому подобное:
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;
**************************
Войдите в систему как суперпользователь, чтобы вы могли проверить все базы данных и их схемы: -
sudo su - postgres
Затем мы можем попасть в оболочку postgresql с помощью следующей команды: -
psql
Теперь вы можете проверить весь список баз данных с помощью следующей команды: -
\l
Если вы хотите проверить размеры баз данных, также используйте: -
\l+
Нажмите, q
чтобы вернуться.
Как только вы нашли свою базу данных, вы можете подключиться к ней, используя следующую команду: -
\c database_name
После подключения вы можете проверить таблицы базы данных или схему с помощью: -
\d
Теперь, чтобы вернуться к оболочке, используйте: -
q
Теперь для дальнейшего просмотра деталей определенной таблицы используйте: -
\d table_name
Чтобы вернуться к postgresql_shell, нажмите \q
.
И чтобы вернуться обратно в терминал нажмите exit
.
Если вы хотите видеть только список созданных вами таблиц, вы можете только сказать:
\dt
Но у нас также есть, PATTERN
которые помогут вам настроить, какие таблицы показывать. Чтобы показать все, включая pg_catalog
схемы, вы можете добавить *
.
\dt *
Если вы делаете: \?
\ dt [S +] [PATTERN] список таблиц
использовать только видеть таблицы
=> \dt
если хотите увидеть таблицы схемы
=>\dt+
если вы хотите увидеть конкретные таблицы схем
=>\dt schema_name.*
+
с S
. Последний (буква) показывает таблицы схемы. +
Просто показывает дополнительную информацию.
Сначала соединитесь с базой данных, используя следующую команду
\c database_name
И вы увидите это сообщение You are now connected to database database_name
. И они запускают следующую команду
SELECT * FROM table_name;
В database_name и table_name просто обновите свою базу данных и имя таблицы
Если вы используете pgAdmin4 в PostgreSQL, вы можете использовать это для отображения таблиц в вашей базе данных:
select * from information_schema.tables where table_schema='public';
Обратите внимание, что \dt
один будет перечислять таблицы в общедоступной схеме базы данных, которую вы используете. Мне нравится хранить мои таблицы в отдельных схемах, поэтому принятый ответ не работает для меня.
Чтобы перечислить все таблицы в определенной схеме , мне нужно было:
1) Подключиться к нужной базе данных:
psql mydb
2) Укажите имя схемы, для которой я хочу видеть таблицы после \dt
команды, например:
\dt myschema.*
Это показывает мне результаты, которые меня интересуют:
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 (no * обязательный) - перечислит все таблицы для существующей базы данных, к которой вы уже подключены. Также полезно отметить:
\ d [имя_таблицы] - покажет все столбцы для данной таблицы, включая информацию о типе, ссылки и ключевые ограничения.
Использование psql : \ dt
Или:
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
Прежде всего, вы должны связаться с вашей базой данных, как
моя база данных Ubuntu
используйте эту команду для подключения
\c ubuntu
Это сообщение покажет
Msgstr "Вы подключены к базе данных" ubuntu "как пользователь" postgres "."
Сейчас же
Запустите эту команду, чтобы показать все таблицы в нем
\d+
На мой вкус самый простой способ перечислить все таблицы в командной строке:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Для данной базы данных просто добавьте имя базы данных:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Работает как на Linux, так и на Windows.
как быстрый вкладчик
# 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'
или, если вы предпочитаете более понятный многострочный вывод json:
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