Проверка наличия логической сущности
Содержание раздела
При успешном создании любой логической сущности — логической базы данных, логической таблицы, логического представления, внешней таблицы загрузки, внешней таблицы выгрузки или материализованного представления — система возвращает в ответе пустой объект ResultSet. Если сущность не удалось создать, система возвращает исключение. Таким образом, по ответу на запрос можно определить, создалась ли логическая сущность, но при необходимости можно проверить наличие сущности, как описано в этом разделе.
Наличие логической сущности можно проверить любым из способов:
- запросить метаданные из соответствующего системного представления (способ недоступен для внешних таблиц);
- выполнить SELECT-запрос к проверяемой логической сущности (способ недоступен для логической БД и внешних таблиц);
- проверить дерево объектов в SQL-клиенте.
Примеры запросов для каждого типа сущности доступны в секциях ниже:
- Проверка наличия логической базы данных;
- Проверка наличия логической таблицы;
- Проверка наличия логического представления;
- Проверка наличия материализованного представления;
- Проверка наличия внешней таблицы.
Примечание: наличие внешних таблиц загрузки и выгрузки можно проверить только в дереве объектов SQL-клиента. Внешние таблицы не отображаются в системных представлениях, и для них недоступны SELECT-запросы.
Проверка наличия логической базы данных
Чтобы проверить наличие логической базы данных, используйте любой из способов:
- Выполните запрос к системному представлению
schemata
(вместоDB_NAME
подставьте имя логической БД в верхнем регистре):SELECT CASE WHEN count(*) > 0 THEN 'БД существует' ELSE 'БД не существует' END FROM INFORMATION_SCHEMA.schemata WHERE schema_name = '<DB_NAME>'
Если логическая база данных существует, в ответе возвращается строка “БД существует”, иначе — строка “БД не существует”.
- Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже).
Если логическая база данных существует, она присутствует среди объектов в SQL-клиенте, иначе — отсутствует среди объектов.
На рисунке ниже показана логическая БД в дереве объектов SQL-клиента.
Проверка наличия логической таблицы
Чтобы проверить наличие логической таблицы, используйте любой из способов:
- Выполните запрос к системному представлению
tables
(вместоDB_NAME
иTABLE_NAME
подставьте имя логической БД и имя таблицы в верхнем регистре):SELECT CASE WHEN count(*) > 0 THEN 'таблица существует' ELSE 'таблица не существует' END FROM INFORMATION_SCHEMA.tables WHERE table_schema = '<DB_NAME>' AND (table_name = '<TABLE_NAME>' AND table_type = 'BASE TABLE')
Если логическая таблица существует, в ответе возвращается строка “таблица существует”, иначе — строка “таблица не существует”.
- Выполните SELECT-запрос к логической таблице, например:
SELECT * FROM <db_name>.<table_name> LIMIT 5
Если логическая таблица существует, запрос возвращает от ноля до пяти записей (в зависимости от содержимого таблицы), иначе — исключение
Entity <table_name> does not exist
. -
Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже).
Если логическая таблица существует, она присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди таких объектов.
Проверка наличия логического представления
Чтобы проверить наличие логического представления, используйте любой из способов:
- Выполните запрос к системному представлению
tables
(вместоDB_NAME
иVIEW_NAME
подставьте имя логической БД и имя логического представления в верхнем регистре):SELECT CASE WHEN count(*) > 0 THEN 'представление существует' ELSE 'представление не существует' END FROM INFORMATION_SCHEMA.tables WHERE table_schema = '<DB_NAME>' AND (table_name = '<VIEW_NAME>' AND table_type = 'VIEW')
Если логическое представление существует, в ответе возвращается строка “представление существует”, иначе — строка “представление не существует”.
- Выполните SELECT-запрос к логическому представлению, например:
SELECT * FROM <db_name>.<view_name> LIMIT 5
Если логическое представление существует, запрос возвращает от ноля до пяти записей, иначе — исключение
Entity <view_name> does not exist
. -
Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже).
Если логическое представление, оно присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди объектов логической БД.
Проверка наличия материализованного представления
Чтобы проверить наличие материализованного представления, используйте любой из способов:
- Выполните запрос к системному представлению
tables
(вместоDB_NAME
иMATERIALIZED_VIEW_NAME
подставьте имя логической БД и имя представления в верхнем регистре):SELECT CASE WHEN count(*) > 1 THEN 'представление существует' ELSE 'представление не существует' END FROM INFORMATION_SCHEMA.tables WHERE table_schema = '<DB_NAME>' AND ((table_name = '<MATERIALIZED_VIEW_NAME>' AND table_type = 'BASE TABLE') OR (table_name = 'SYS_<MATERIALIZED_VIEW_NAME>' AND table_type = 'VIEW'))
Если материализованное представление существует, в ответе возвращается строка “представление существует”, иначе — строка “представление не существует”.
- Выполните SELECT-запрос к материализованному представлению, например:
SELECT * FROM <db_name>.<materialized_view_name> LIMIT 5
Если материализованное представление существует, запрос возвращает от ноля до пяти записей, иначе — исключение
Entity <materialized_view_name> does not exist
. -
Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже).
Если материализованное представление существует, оно присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди объектов логической БД.
Проверка наличия внешней таблицы
Чтобы проверить наличие внешней таблицы загрузки или выгрузки, проверьте дерево объектов в вашем SQL-клиенте (см. рисунки ниже). Если внешняя таблица существует, она присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди объектов логической БД.
На рисунках ниже показаны фрагменты дерева объектов SQL-клиента: с внешней таблицей загрузки sales_ext_upload
и внешней таблицей выгрузки sales_ext_download
соответственно.