SQL query 문을 이용하시면 됩니다.
select relname from pg_class where relname not like 'pg_%' and relkind='r';
더 정확히는 다음과 같이 하시면 됩니다.
SELECT c.relname as "Name", 'table'::text as "Type", u.usename as "Owner"
FROM pg_class c, pg_user u
WHERE c.relowner = u.usesysid AND c.relkind = 'r'
AND c.relname !~ '^pg_'
UNION
SELECT c.relname as "Name", 'table'::text as "Type", NULL as "Owner"
FROM pg_class c
WHERE c.relkind = 'r'
AND not exists (select 1 from pg_user where usesysid = c.relowner)
AND c.relname !~ '^pg_'
ORDER BY "Name";
그리고 필드 이름을 알수 있는 query 는 다음과 같이 하시면 될 것 같군요.
SELECT a.attname, format_type(a.atttypid, a.atttypmod), a.attnotnull, a.atthasdef, a.attnum
FROM pg_class c, pg_attribute a
WHERE c.relname = 'oracle'
AND a.attnum > 0 AND a.attrelid = c.oid
ORDER BY a.attnum;
다음은 해당 index 를 찾아 보는 query 입니다.
SELECT c.relname as "Name", 'table'::text as "Type", u.usename as "Owner"
FROM pg_class c, pg_user u
WHERE c.relowner = u.usesysid AND c.relkind = 'r'
AND c.relname !~ '^pg_'
AND c.relname ~ '^cache;'
UNION
SELECT c.relname as "Name", 'table'::text as "Type", NULL as "Owner"
FROM pg_class c
WHERE c.relkind = 'r'
AND not exists (select 1 from pg_user where usesysid = c.relowner)
AND c.relname !~ '^pg_'
AND c.relname ~ '^cache;'
ORDER BY "Name";
이상의 query 는 psql -E db_name 으로 접속후 보이는 쿼리구문을 그대로 가져다 놓은 것입니다. -E 옵션의 역할을 아시고자 한다면 man psql을 자세히 보시기 바랍니다.
>>김준원 님께서 쓰시길<<
:: postgres를 접한지 일주일쯤 되는데요..
::
:: 1. libpq를 사용해서 db의 모든 테이블 이름을 가져오려 하는데..함수를 모르겠습니다. doc나 게시판
:: 을 보았는데 해결 방법을 못찾겠더라구요..
:: 그냥 콘솔에서는 \dt를 치면 나오는 것을 어떻게 하면 libpq에서 c함수를 사용하는지 모르겟습니다.
::
:: 2. 한 테이블의 모든 field name을 가져오는 함수는 없는지 궁금합니다...
|