모든 테이블을 나열하고 싶습니다 liferay
PostgreSQL 설치시 데이터베이스의 . 어떻게합니까?
데이터베이스 SELECT * FROM applications;
에서 실행 하고 싶습니다 liferay
.applications
내 liferay db의 테이블입니다. 이것은 어떻게 이루어 집니까?
모든 데이터베이스 목록은 다음과 같습니다.
postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
liferay | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | liferay=CTc/postgres
lportal | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
postgres | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
template0 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
postgres=#
답변
모든 테이블 을 나열 하려면 다음을 사용해야합니다.
\dt *.*
모든 스키마의 모든 테이블을 원한다는 것을 나타냅니다 . 여기에는의 테이블 pg_catalog
, 시스템 테이블 및의 테이블이 포함 됩니다 information_schema
. “모든 사용자 정의 스키마의 모든 테이블”을 말하는 내장 된 방법은 없습니다. 그러나 search_path
실행하기 전에 원하는 모든 스키마 목록으로 설정할 수 있습니다\dt
.
프로그래밍 방식으로이 작업을 수행 할 수도 있는데,이 경우 psql
백 슬래시 명령이 작업을 수행하지 않습니다. 곳이다 (가)INFORMATION_SCHEMA
구조로되어 있습니다. 테이블을 나열하려면
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
BTW, psql
백 슬래시 명령에 대한 응답으로 수행중인 작업 을 보려면 플래그로 실행 psql
하십시오 -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;
INFORMATION_SCHEMA
가능한 경우 Pg 시스템 카탈로그 대신 이식 가능한 SQL 표준을 사용하는 것이 바람직 하지만 때로는 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
답변
한 줄 예는
\dt schemaname.*
당신의 상원에서
\dt public.*
답변
모든 스키마에 모든 테이블이 필요하지 않은 경우 자동화 스크립트에서 사용할 수 있습니다.
for table in $(psql -qAntc '\dt' | cut -d\| -f2); do
...
done
답변
\?
psql에서 지원되는 모든 명령에 대한 정보를 얻기 위해 입력 할 수 있습니다 .