Проверка наличия логической сущности
Содержание раздела
- Проверка наличия логической базы данных
- Проверка наличия логической таблицы
- Проверка наличия логического представления
- Проверка наличия материализованного представления
- Проверка наличия внешней таблицы загрузки или выгрузки
- Проверка наличия внешней readable-таблицы
- Проверка наличия внешней writable-таблицы
При успешном создании логической сущности система возвращает в ответе пустой объект ResultSet, при неуспешном — исключение. То есть по ответу на запрос можно определить, создалась ли логическая сущность. В дальнейшем наличие сущности можно проверить, как описано в этом разделе.
Наличие сущности можно проверить следующими способами:
- запросить метаданные из соответствующего системного представления;
- выполнить SELECT-запрос к проверяемой логической сущности;
- проверить дерево объектов в SQL-клиенте.
Некоторые способы доступны не для всех сущностей, подробнее см. в разделах ниже по каждой сущности в отдельности.
Проверка наличия логической базы данных
Проверка в системном представлении
Выполните запрос к системному представлению schemata
, подставив вместо DB_NAME
имя логической БД в верхнем регистре:
SELECT
CASE
WHEN count(*) > 0 THEN 'БД существует'
ELSE 'БД не существует'
END
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name = '<DB_NAME>'
Если логическая база данных существует, в ответе возвращается строка «БД существует», иначе — строка «БД не существует».
Проверка в дереве SQL-клиента
Проверьте дерево объектов в вашем 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-запрос к логической таблице, например:
SELECT * FROM <db_name>.<table_name> LIMIT 5
Если логическая таблица существует, запрос возвращает от ноля до пяти записей (в зависимости от содержимого таблицы), иначе — исключение Entity <table_name> does not exist
.
Проверка в дереве SQL-клиента
Проверьте дерево объектов в вашем 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-запрос к логическому представлению, например:
SELECT * FROM <db_name>.<view_name> LIMIT 5
Если логическое представление существует, запрос возвращает от ноля до пяти записей, иначе — исключение Entity <view_name> does not exist
.
Проверка в дереве SQL-клиента
Проверьте дерево объектов в вашем 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 = 'MATERIALIZED VIEW')
Если материализованное представление существует, в ответе возвращается строка «представление существует», иначе — строка «представление не существует».
Проверка SELECT-запросом
Выполните SELECT-запрос к материализованному представлению, например:
SELECT * FROM <db_name>.<materialized_view_name> LIMIT 5
Если материализованное представление существует, запрос возвращает от ноля до пяти записей, иначе — исключение Entity <materialized_view_name> does not exist
.
Проверка в дереве SQL-клиента
Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже). Если материализованное представление существует, оно присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди объектов логической БД.
Материализованное представление в дереве объектов
Проверка наличия внешней таблицы загрузки или выгрузки
Наличие внешних таблиц загрузки и выгрузки можно проверить только в дереве объектов SQL-клиента. Внешние таблицы не отображаются в системных представлениях, и для них недоступны SELECT-запросы.
Если внешняя таблица существует, она присутствует среди объектов логической БД в дереве SQL-клиента, иначе — отсутствует среди объектов логической БД.
На рисунках ниже показаны фрагменты дерева объектов SQL-клиента: с внешней таблицей загрузки sales_ext_upload
и внешней таблицей выгрузки sales_ext_download
соответственно.
Внешняя таблица загрузки в дереве объектов
Внешняя таблица выгрузки в дереве объектов
Проверка наличия внешней readable-таблицы
Проверка в системном представлении
Выполните запрос к системному представлению 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 = 'READABLE EXTERNAL TABLE')
Если таблица существует, в ответе возвращается строка «таблица существует», иначе — строка «таблица не существует».
Проверка SELECT-запросом
Выполните SELECT-запрос к readable-таблице, например:
SELECT * FROM <db_name>.<table_name> LIMIT 5
Если таблица существует, запрос возвращает от ноля до пяти записей (в зависимости от содержимого таблицы), иначе — исключение Entity <table_name> does not exist
.
Проверка в дереве SQL-клиента
Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже). Если таблица существует, она присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди таких объектов.
Внешняя readable-таблица в дереве объектов
Проверка наличия внешней writable-таблицы
Проверка в системном представлении
Выполните запрос к системному представлению 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 = 'WRITABLE EXTERNAL TABLE')
Если таблица существует, в ответе возвращается строка «таблица существует», иначе — строка «таблица не существует».
Проверка в дереве SQL-клиента
Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже). Если таблица существует, она присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди таких объектов.
Внешняя writable-таблица в дереве объектов