#sql #oracle #postgresql
#sql #Oracle #postgresql
Вопрос:
Я конвертирую некоторые материалы из Oracle в PostgreSQL.
У меня есть такое утверждение:
select * from tab;
Я имею в виду tab
здесь.
Например, select * from tab
в Oracle предоставляет мне то, что я предполагаю, как список всех объектов, таблиц и представлений; все.
Это не работает в Postgres, и я, похоже, не могу найти подходящую замену.
Комментарии:
1. я предполагаю, что это список всех объектов, таблиц и представлений — вы имеете в виду, что это не задокументировано? Я нашел это из ссылки на Oracle 7 (1996) : «Это представление включено для совместимости с Oracle версии 5. Использование этого представления не рекомендуется «. Он уже устарел в 1996 году. Пусть это впитается.
2.
select * from pg_tables
илиselect * from information_schema.tables
Ответ №1:
Это представление Oracle определяется как
select o.name,
decode(o.type#, 2, 'TABLE', 3, 'CLUSTER', 150, 'HIERARCHY', 152, 'ANALYTIC VIEW',
4, 'VIEW', 5, 'SYNONYM'), t.tab#
from sys.tab$ t, sys."_CURRENT_EDITION_OBJ" o
where o.owner# = userenv('SCHEMAID')
and o.type# >=2
and o.type# <=5
and o.linkname is null
and o.obj# = t.obj# ( )
Таким образом, в схеме перечислены таблицы и т. Д. С тем же именем, что и у пользователя.
Вы могли бы получить что-то подобное из стандартной базы данных, соответствующей
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = current_user;