Показать таблицы в 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');

  1. первый вход в систему как пользователь postgres:

    sudo su - postgres

  2. подключение к требуемой БД:psql -d databaseName

  3. \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 вы можете запускать такие команды, как:

  1. \? список всех команд
  2. \l базы данных
  3. \conninfo отображение информации о текущем соединении
  4. \c [DBNAME] подключиться к новой базе данных, например, \c template1
  5. \dt список таблицы
  6. \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

затем вы вводите свой пароль, это должно дать доступ к вашей базе данных