Проверка наличия логической сущности

Содержание раздела
  1. Проверка наличия логической базы данных
    1. Проверка в системном представлении
    2. Проверка в дереве SQL-клиента
  2. Проверка наличия логической таблицы
    1. Проверка в системном представлении
    2. Проверка SELECT-запросом
    3. Проверка в дереве SQL-клиента
  3. Проверка наличия логического представления
    1. Проверка в системном представлении
    2. Проверка SELECT-запросом
    3. Проверка в дереве SQL-клиента
  4. Проверка наличия материализованного представления
    1. Проверка в системном представлении
    2. Проверка SELECT-запросом
    3. Проверка в дереве SQL-клиента
  5. Проверка наличия внешней таблицы загрузки или выгрузки
  6. Проверка наличия внешней readable-таблицы
    1. Проверка в системном представлении
    2. Проверка SELECT-запросом
    3. Проверка в дереве SQL-клиента
  7. Проверка наличия внешней writable-таблицы
    1. Проверка в системном представлении
    2. Проверка в дереве SQL-клиента

При успешном создании логической сущности система возвращает в ответе пустой объект ResultSet, при неуспешном — исключение. То есть по ответу на запрос можно определить, создалась ли логическая сущность. В дальнейшем наличие сущности можно проверить, как описано в этом разделе.

Наличие сущности можно проверить следующими способами:

Некоторые способы доступны не для всех сущностей, подробнее см. в разделах ниже по каждой сущности в отдельности.

Проверка наличия логической базы данных

Проверка в системном представлении

Выполните запрос к системному представлению 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-таблица в дереве объектов