Показать таблицы в PostgreSQL
что эквивалентно show tables
(из MySQL) в PostgreSQL?
18 ответов
С psql
интерфейс командной строки, это показывает все таблицы в текущей схеме:
\dt
программно (или с psql
интерфейс, конечно, тоже):
SELECT * FROM pg_catalog.pg_tables;
системные таблицы в базе данных pg_catalog.
войдите в систему как суперпользователь:
sudo -u postgres psql
вы можете перечислить все базы данных и пользователей по \l
command, (список других команд по \?
).
теперь, если вы хотите увидеть другие базы данных вы можете изменить пользователя/базы данных как \c template1
, \c postgres postgres
и использовать \d
, \dt
или \dS
чтобы увидеть таблицы / представления / etc.
(для полноты картины)
вы также можете запросить (SQL-standard) информация-схемы:
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
-
первый вход в систему как пользователь postgres:
sudo su - postgres
подключение к требуемой БД:
psql -d databaseName
\dt
возвращает список всех таблиц в базе данных, к которой вы подключены.
запуск psql с флагом-E будет повторять запрос, используемый внутри для реализации \ДТ и подобные:
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;
**************************
если вы хотите увидеть только список таблиц, которые вы создали, вы можете только сказать:
\dt
но у нас есть PATTERN
что поможет вам настроить, какие таблицы показывать. Чтобы показать все, включая pg_catalog
схемы, вы можете добавить *
.
\dt *
если вы: \?
\dt[S+] [шаблон] список таблиц
вы можете использовать интерактивный терминал psql PostgreSQL для отображения таблиц в 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
список таблицы -
\q
выход из psql
сначала подключитесь к базе данных, используя следующую команду
\c database_name
и вы увидите это сообщение, Теперь вы подключены к database database_name и выполните следующую команду
SELECT * FROM table_name;
в database_name и table_name просто обновите свою базу данных и имя таблицы
используйте только таблицы
=> \dt
Если хотите увидеть таблицы схемы
=>\dt+
Если вы хотите увидеть конкретные таблицы-схемы
=>\dt schema_name.*
Если вы используете Pgadmin4 в PostgreSQL, вы можете использовать это, чтобы показать таблицы в вашей базе данных:
select * from information_schema.tables where table_schema='public';
отметим, что список таблиц общественные схема базы данных, которую вы используете. Мне нравится держать свои таблицы в отдельных схемах, поэтому принятый ответ не сработал для меня.
перечислить все таблицы в рамках определенной схемы мне нужно:
1) Подключение к нужной базе данных:
psql mydb
2) Укажите имя схемы, для которой я хочу видеть таблицы после , как это:
\dt myschema.*
Это показывает мне результаты, которые меня интересуют:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
\dt (no * required) -- перечислит все таблицы для существующей базы данных, к которой вы уже подключены. Также полезно отметить:
\d [table_name] -- покажет все столбцы для данной таблицы, включая информацию о типе, ссылки и ключевые ограничения.
вы можете перечислить таблицы в текущей базе данных с помощью \dt
.
чистки рядов, \d tablename
покажет подробную информацию о данной таблице, что-то вроде show columns from tablename
в MySQL, но с немного большей информацией.
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
используя 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
\dt перечислит таблицы, а "\pset pager off" покажет их в том же окне, не переключаясь на отдельный. Люблю эту функцию до смерти в dbshell.
прежде всего, вы должны подключиться к вашей базе данных, как
моя база данных ubuntu
используйте эту команду для подключения
\c ubuntu
это сообщение будет отображаться
"теперь вы подключены к базе данных" ubuntu "как пользователь"postgres"."
теперь
выполните эту команду, чтобы показать все таблицы в нем
\d+
сначала вы можете подключиться к базе данных postgres с помощью postgre.приложение на mac или с помощью postico. Выполните следующую команду:
psql -h localhost -p port_number -d database_name -U user_name -W
затем вы вводите свой пароль, это должно дать доступ к вашей базе данных