Показать таблицы в PostgreSQL

1300

Какой эквивалент show tables (из MySQL) в PostgreSQL?

Теги:

19 ответов

1896
Лучший ответ

От интерфейса командной строки psql это показывает все таблицы в текущей схеме:

\dt

Программно (или из интерфейса psql, конечно):

SELECT * FROM pg_catalog.pg_tables;

Системные таблицы находятся в базе данных pg_catalog.

  • 81
    @StephenCorwin Нет, \l является эквивалентом show databases в MySQL. dtshow tables и lshow databases
  • 10
    \dt очень полезно. Этот pg_catalog.pg_tables намного меньше, так как он объединяет внутренние таблицы и пользовательские таблицы для любой базы данных, к которой вы подключены.
Показать ещё 9 комментариев
148

Вход в качестве суперпользователя:

sudo -u postgres psql

Вы можете перечислить все базы данных и пользователей командой \l, (перечислите другие команды \?).

Теперь, если вы хотите увидеть другие базы данных, вы можете изменить user/database командой \c, например \c template1, \c postgres postgres и использовать \d, \dt или \dS, чтобы увидеть таблицы/представления/etc.

  • 0
    Это лучший ответ, так как обычно может быть установлено более одной базы данных.
102

(для полноты)

Вы также можете запросить информационную схему (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');
  • 3
    +1 хотя для полноты, mysql show tables показывает только текущую схему, хорошо подумать об этом таким образом, mysql имеет только одну базу данных, но несколько схем, где postgresql может иметь несколько баз данных (каталоги) и схемы. Таким образом, эквивалентом должно быть table_schema = 'DB_NAME';
48
  • Первый вход в систему как пользователь postgres:

    sudo su - postgres

  • подключиться к требуемому db: psql -d databaseName

  • \dt вернет список всей таблицы в базе данных, к которой вы подключены.

34

Вы можете использовать интерактивный терминал 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 вы можете запускать такие команды, как:

  1. \? перечислить все команды
  2. \l список баз данных
  3. \conninfo отображать информацию о текущем соединении
  4. \c [DBNAME] подключиться к новой базе данных, например, \c template1
  5. \dt список таблиц
  6. Затем вы можете запустить операторы SQL, например, SELECT * FROM my_table; (Примечание: оператор должен заканчиваться точкой с запятой ;)
  7. \q выйти из psql
34

Запуск 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;        
**************************
24

Если вы хотите просмотреть список созданных таблиц, вы можете только сказать:

\dt

Но у нас также есть PATTERN, который поможет вам настроить, какие таблицы показывать. Чтобы показать все, включая pg_catalog Schema, вы можете добавить *.

\dt *

Если вы выполните: \?

\ dt [S +] [PATTERN] таблицы таблиц

19

Сначала соединитесь с базой данных, используя следующую команду

\c database_name

И вы увидите это сообщение - You are now connected to database database_name. И они запускают следующую команду

SELECT * FROM table_name;

В database_name и table_name просто обновите свою базу данных и имя таблицы

  • 19
    Я не уверен, что это отвечает на вопрос. Я думаю, что ОП пытается (пытался) узнать все таблицы в своей базе данных, а не получить все строки из определенной таблицы в своей базе данных ... верно?
16

использовать только видеть таблицы

=> \dt

если хотите увидеть таблицы схемы

=>\dt+

если вы хотите увидеть конкретные таблицы схем

=>\dt schema_name.* 
  • 0
    Я уверен, что вы путаете + с S Последний (буква) показывает таблицы схемы. + Просто показывает дополнительную информацию.
14

Если вы используете pgAdmin4 в PostgreSQL, вы можете использовать это, чтобы отображать таблицы в своей базе данных:

select * from information_schema.tables where table_schema='public';
13

Обратите внимание, что только \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
9

Войдите в систему как суперпользователь, чтобы вы могли проверить все базы данных и их схемы: -

sudo su - postgres

Затем мы можем перейти к оболочке postgresql с помощью следующей команды: -

psql

Теперь вы можете проверить весь список баз данных с помощью следующей команды: -

\l

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

\l+

Как только вы нашли свою базу данных, вы можете подключиться к ней, используя следующую команду:

\c database_name

После подключения вы можете проверить таблицы базы данных или схему с помощью: -

\d

Теперь, чтобы вернуться к оболочке, используйте: -

q

Теперь, чтобы увидеть детали таблицы, используйте:

\d table_name
7

\ dt (no * required) - отобразит все таблицы для существующей базы данных, к которой вы уже подключены. Также полезно отметить:

\ d [table_name] - отобразит все столбцы для данной таблицы, включая информацию о типе, ссылки и ограничения ключа.

5
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
5

Вы можете перечислить таблицы в текущей базе данных с помощью \dt.

Fwiw, \d tablename покажет подробности о данной таблице, что-то вроде show columns from tablename в MySQL, но с немного дополнительной информацией.

4

Использование 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
2

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

моя база данных ubuntu

используйте эту команду для подключения

 \c ubuntu

Это сообщение покажет

"Теперь вы подключены к базе данных" ubuntu "как пользователь" postgres "."

Теперь

Запустите эту команду, чтобы показать все таблицы в ней

\d+
1

\ dt отобразит таблицы, а "\ pset pager off" отобразит их в том же окне, не переключаясь на отдельный. Любовь, которая до смерти умирает в dbshell.

-1

Сначала вы можете подключиться к своей базе данных postgres, используя postgre.app на mac или используя postico. Выполните следующую команду:

psql -h localhost -p port_number -d database_name -U user_name -W

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню