Псевдоним базы данных в Informix

В Informix я могу запустить оператор SQL, который использует другую базу данных:

INSERT INTO other_db:mytable ...

Я бы хотел "объединить" обе базы, но сделать это "пошагово".

Сначала я хочу переместить все данные из other_db в основную базу данных и сделать псевдоним, который other_db = main_database. Таким образом, у меня будет время удалить "other_db:" из всех утверждений.

Как я могу установить псевдоним базы данных?


person Michał Niklas    schedule 22.12.2008    source источник
comment
Не забудьте выбрать ответ — это большая галочка рядом с ответом, когда вы смотрите на него. Нажмите на него, и он станет зеленым. (И это дает вам 2 очка, а также дает очки RET).   -  person Jonathan Leffler    schedule 24.12.2008
comment
Спасибо, Джон, но я думаю, что Элвис покинул здание...   -  person RET    schedule 31.12.2008
comment
OK. Помечен как принятый. У меня были некоторые проблемы с замечанием знака V :). Теперь он зеленый) :). С уважением,   -  person Michał Niklas    schedule 31.12.2008


Ответы (1)


Я не знаю ни одного метода создания псевдонима для всей базы данных.

Однако вы можете создавать синонимы между базами данных в форме:

DATABASE old_db;
CREATE SYNONYM table_name FOR new_db:table_name;

Если вы создадите такой псевдоним для каждой перемещаемой таблицы, вы сможете получить тот же эффект. Как только все таблицы будут перемещены, вы можете удалить все ссылки на old_db.

Вы можете запросить systables для идентификации реальных таблиц в old_db, т.е.:

DATABASE old_db;
SELECT tabname, nrows
  FROM systables
  WHERE tabtype = "T"
    AND tabid > 99 -- exclude internal tables

Количество строк, конечно, будет зависеть от достаточно текущего UPDATE STATISTICS.

Надеюсь, это поможет.

person RET    schedule 23.12.2008