Psql список всех таблиц
Я хотел бы перечислить все таблицы в liferay база данных в моей установке PostgreSQL. Как мне это сделать?
Я хотел бы выполнить SELECT * FROM applications; на
6 ответов:
если вы хотите получить список все таблицы, вы должны использовать:
\dt *.*, чтобы указать, что вы хотите, чтобы все таблицы во всех схемах. Это будет включать таблицы в
pg_catalog, системные таблицы, и те, вinformation_schema. Нет встроенного способа сказать "все таблицы во всех пользовательских схемах"; однако вы можете установить свойsearch_pathк списку всех интересующих схем перед запуском\dt.вы можете сделать это программно, в котором дело
psqlобратная косая черта-команды не будут выполнять эту работу. Вот где theINFORMATION_SCHEMAприходит на помощь. Список таблиц:SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';кстати, если вы когда-нибудь хотите увидеть, что
psqlделает в ответ на команду обратной косой черты, runpsqlС-Eфлаг. например:$ psql -E regress regress=# \list ********* QUERY ********** SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcollate as "Collate", d.datctype as "Ctype", pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1; **************************так что вы можете видеть, что
psqlпоискpg_catalog.pg_databaseкогда он получает список баз данных. Аналогично для таблиц в базе данных: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' WHEN 'f' THEN 'foreign table' 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;желательно чтобы использовать SQL-стандарт, portable
INFORMATION_SCHEMAвместо системных каталогов Pg, где это возможно, но иногда вам нужна PG-специфическая информация. В этих случаях это нормально, чтобы запросить система каталогов напрямую, иpsql -Eможет быть полезным руководством для того, как это сделать.
подключитесь к базе данных, затем перечислите таблицы:
\c liferay \dtвот как я это делаю.
вы можете объединить эти две команды в одну строку, если вы предпочитаете:
\c liferay \dt
чтобы увидеть общие таблицы вы можете сделать
список таблиц
\dtтаблица списка, просмотр и права доступа
\dp or \zили просто имена таблиц
select table_name from information_schema.tables where table_schema = 'public';
В SQL-запросе можно написать такой код:
select table_name from information_schema.tables where table_schema='YOUR_TABLE_SCHEME';замените схему таблицы на YOUR_TABLE_SCHEME;
пример:
select table_name from information_schema.tables where table_schema='eLearningProject';чтобы увидеть всю схему и все таблицы, нет необходимости в предложении where:
select table_name from information_schema.tables