Link Search Menu Expand Document

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

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

При успешном создании любой логической сущности — логической базы данных, логической таблицы, логического представления, внешней таблицы загрузки, внешней таблицы выгрузки или материализованного представления — система возвращает в ответе пустой объект 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 = 'MATERIALIZED 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 соответственно.

Внешняя таблица загрузки в дереве объектов

Внешняя таблица выгрузки в дереве объектов