Самое простое решение - сделать резервную копию экземпляра базы данных и восстановить его в отдельный экземпляр. Если это невозможно для вас, тогда есть другие возможности.
- dbexport / dbimport
- выгрузить / загрузить
- вставленные вручную SQL-вставки
Если структура базы данных идентична, вы можете использовать dbexport / dbimport, однако это позволит выгрузить данные в плоские файлы, либо в файловую систему, либо на ленту, а затем импортировать из плоских файлов.
Обычно я нахожу, что если структура БД одинакова, то загрузка / выгрузка - самое простое решение.
Если вы не хотите использовать load / unload dbimport / dbexport, тогда вы можете использовать прямые SQL INSERTS следующим образом (непроверенный, вам нужно будет проверить синтаксис)
INSERT INTO dbname2@informix_server2:table
SELECT * FROM dbnam1e@informix_server1:table_name
Это, конечно, подразумевает согласованную структуру таблицы, вы можете использовать список столбцов, если структура отличается.
Одной из областей, которая может вызвать у вас проблемы, является ссылочная целостность. Если у вас есть внешние ключи, это вызовет проблемы, так как вам нужно будет убедиться, что вставки выполнены в правильном порядке. У вас также могут возникнуть проблемы с колонками SERIAL и INSERTS. Загрузка не страдает от этой проблемы, так как вы можете загрузить в таблицу последовательное значение и сохранить исходные значения.
Я часто обнаруживал, что лучшее решение заключается в следующем
- Взять схему из базы данных1.
- Разделите его на 2 части
сегмент это все создание таблицы
заявления, вторая часть это все
ИНДЕКСА СОЗДАНИЯ, референтный
заявления о целостности и т. д.
- Создать базу данных2 из 1-й части
схема.
- Используйте UNLOAD / LOAD для загрузки данных в
database2.
- Применить вторую часть схемы к базе данных2
Это очень похоже на процесс, через который проходит dbimport, но исторически я не мог использовать dbimport, так как моя база данных содержит синонимы к другой базе данных, а dbimport с ними не работал.