Link Search Menu Expand Document

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

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

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

Проверить наличие логической сущности можно несколькими способами:

Примеры запросов для каждой из сущностей приведены в секциях ниже:

Примечание: наличие внешних таблиц загрузки и выгрузки можно проверить только в дереве объектов SQL-клиента. Внешние таблицы не отображаются в системных представлениях, и для них недоступны SELECT-запросы.

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

Чтобы проверить наличие логической базы данных, используйте любой из способов:

  • Выполните запрос к системному представлению schemata (вместо DB_NAME подставьте имя логической БД в верхнем регистре; см. пример ниже):
    SELECT * FROM INFORMATION_SCHEMA.schemata
    WHERE schema_name = '<DB_NAME>'
    

    Если логическая база данных существует, запрос возвращает одну запись, иначе — ноль записей.

  • Проверьте дерево объектов в вашем SQL-клиенте (см. рисунок ниже).
    Если логическая база данных существует, она присутствует среди объектов в SQL-клиенте, иначе — отсутствует среди объектов.

В примере ниже показан запрос для проверки наличия логической БД sales.

-- проверка наличия логической базы данных sales
SELECT
  CASE
    WHEN count(*) > 0 THEN 'БД существует'
    ELSE 'БД не существует'
  END
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name = 'SALES'

На рисунке ниже показана логическая БД в дереве объектов SQL-клиента.

Логическая БД в дереве объектов

Проверка наличия логической таблицы

Чтобы проверить наличие логической таблицы, используйте любой из способов:

  • Выполните запрос к системному представлению tables (вместо DB_NAME и TABLE_NAME подставьте имя логической БД и имя таблицы в верхнем регистре; см. пример ниже):
    SELECT * 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-клиенте, иначе — отсутствует среди объектов логической БД.

В примере ниже показан запрос для проверки наличия логической таблицы sales.

-- проверка наличия логической таблицы sales
SELECT
  CASE
    WHEN count(*) > 0 THEN 'таблица существует'
    ELSE 'таблица не существует'
  END
FROM INFORMATION_SCHEMA.tables
WHERE table_schema = 'SALES' AND (table_name = 'SALES' AND table_type = 'BASE TABLE')

На рисунке ниже показано дерево объектов SQL-клиента, которое содержит логические таблицы sales и stores.

Логические таблицы в дереве объектов

Проверка наличия логического представления

Чтобы проверить наличие логического представления, используйте любой из способов:

  • Выполните запрос к системному представлению tables (вместо DB_NAME и VIEW_NAME подставьте имя логической БД и имя логического представления в верхнем регистре; см. пример ниже):
    SELECT * 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-клиенте, иначе — отсутствует среди объектов логической БД.

В примере ниже показан запрос для проверки наличия логического представления stores_by_sold_products.

-- проверка наличия логического представления stores_by_sold_products
SELECT
  CASE
    WHEN count(*) > 0 THEN 'представление существует'
    ELSE 'представление не существует'
  END
FROM INFORMATION_SCHEMA.tables
WHERE table_schema = 'SALES' AND (table_name = 'STORES_BY_SOLD_PRODUCTS' AND table_type = 'VIEW')

На рисунке ниже показан фрагмент дерева объектов SQL-клиента, которое содержит логическое представление stores_by_sold_products.

Логическое представление в дереве объектов

Проверка наличия материализованного представления

Чтобы проверить наличие материализованного представления, используйте любой из способов:

  • Выполните запрос к системному представлению tables (вместо DB_NAME и MATERIALIZED_VIEW_NAME подставьте имя логической БД и имя представления в верхнем регистре; см. пример ниже):
    SELECT * 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-клиенте, иначе — отсутствует среди объектов логической БД.

В примере ниже показан запрос для проверки наличия материализованного представления sales_and_stores.

-- проверка наличия материализованного представления sales_and_stores
SELECT
  CASE
    WHEN count(*) > 1 THEN 'представление существует'
    ELSE 'представление не существует'
  END
FROM INFORMATION_SCHEMA.tables
WHERE table_schema = 'SALES' AND 
    ((table_name = 'SALES_AND_STORES' AND table_type = 'BASE TABLE') OR 
     (table_name = 'SYS_SALES_AND_STORES' AND table_type = 'VIEW'))

На рисунке ниже показано дерево объектов SQL-клиента, которое содержит материализованное представление sales_and_stores.

Материализованное представление в дереве объектов

Проверка наличия внешней таблицы

Чтобы проверить наличие внешней таблицы загрузки или выгрузки, проверьте дерево объектов в вашем SQL-клиенте (см. рисунки ниже). Если внешняя таблица существует, она присутствует среди объектов логической БД в SQL-клиенте, иначе — отсутствует среди объектов логической БД.

На рисунках ниже показаны фрагменты дерева объектов SQL-клиента: с внешней таблицей загрузки sales_ext_upload и внешней таблицей выгрузки sales_ext_download соответственно.

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

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