Массовый импорт файлов 1000 .ixf в базе данных DB2

RodJas спросил: 12 мая 2018 в 05:12 в: database

У меня есть db DB2 в среде ubuntu. Пустая база данных со всеми таблицами уже существует. Теперь я хочу импортировать 1000 соответствующих .ixf файлов в базу данных. Кроме того, у меня есть файл .msg для каждого файла.

Знаете ли вы, как это сделать? Спасибо, Jassin


2 ответа

Есть решение
mao ответил: 12 мая 2018 в 06:16

По соображениям скорости вам не нужно использовать импорт, вместо этого вы можете использовать утилиту загрузки Db2. Используйте импорт только в том случае, если вы уже знаете, что файлы крошечные, и существует достаточная пропускная способность транзакций или существуют таблицы, но не индексы, и вы хотите, чтобы действие по импорту также создавало индексы.

Решение зависит от ваши навыки написания сценариев и частоту выполнения задания. Вам нужно будет узнать, какой файл заполняет эту таблицу независимо от используемой вами технологии.

Db2 в Linux очень программируется с помощью сценариев оболочки (например, с bash). Это умение, заслуживающее изучения.

Вы также можете создавать скрипты такого типа в perl или python или на любом языке сценариев.

Простейшим (и самым медленным) способом является использование Db2 LOAD, чтобы последовательно вставлять файлы.

Более сложные способы включают использование утилиты Db2 LOAD параллельно, в зависимости от количества доступных вам ядер и доступной пропускной способности ввода-вывода. Например, если у вас есть 32 ядра, у вас может быть 20 одновременных заданий нагрузки, каждый из которых загружает отдельную таблицу с подзадачей, имеющей собственное соединение с базой данных. Для этого подхода нет никакой пользы, если ваши контейнеры не находятся в сети SAN с большим количеством пропускной способности ввода / вывода.

Независимо от того, загружаете ли вы последовательно или параллельно, вы должны иметь проверку на каждую команду exit- код и возможность перезапуска с момента сбоя, а также проверить, что количество загружаемых строк соответствует количеству строк в каждом файле IXF (с учетом всех отброшенных строк).

AngocA ответил: 12 мая 2018 в 08:39

У вас есть L-файл? у вас это есть, тогда вы можете выполнить импорт db2move или db2move, а затем RDBMS поместит все эти данные в базу данных.

Файлы ixf содержат определение таблицы плюс данные.

Файлы msg имеют информацию о времени экспорта. После выполнения импорта db2move вы будете регенерировать эти файлы с информацией об импорте.