Утилиты перемещения данных, страница 2

 METHOD P специфицирует номера импортируемых колонок. Данный метод может быть использован только для IXF или DEL форматов.

NULL INDICATORS n специфицирует номером индикатор нулевых значений  для одной или нескольких колонок в файле данных. Если n=0, то колонка не может содержать нулевых значений. “Y” указывает на то, что колонка содержит нулевое значение. “N” указывает на то, что колонка не содержит нулевых значений.

REPLACE удаляет все данные, содержащиеся в таблице и импортирует новые. Может использоваться только когда таблица существует в базе.

REPLACE_CREATE удаляет все данные, содержащиеся в таблице и импортирует новые. Если таблицы в базе данных не существует, то создается новая, соответствующая данным в импортируемом файле.

Пример команды IMPORT:

DB2 IMPORT FROM myfile.ixf OF IXF MESSAGES msg.txt INSERT INTO staff

Утилита загрузки данных «LOAD» используется для эффективного перемещения больших объемов данных в таблицы базы данных. Утилита позволяет импортирвать все типы данных, в том числе LOB (Large Object) и UDT (User Define Types). Утилита Load быстрее, чем утилита Import, т.к. она записывает форматированные страницы напрямую в базу данных, в то время как утилита Import выполняет SQL Insert. При использовании утилиты не происходит запуск триггеров, а также проверки ссылочных и check ограничений. Загружаемые данные должны быть размещены непосредственно локально, в то время как утилиты Export и Import позволяют работать с данными удаленно. Процесс загрузки данных состоит из трех последовательных фаз:

1.  Load, во время которой данные записываются в таблицы. Устанавливаются точки сохранения данных, которые специфицированы в параметре SAVECOUNT команды LOAD. Генерируются сообщения о количестве строк, загруженных в течение заданного интервала между точками сохранения. Если произошел сбой, то команду Load необходимо перезапустить. Данные начнут загружаться с момента последней точки сохранения.

2.  Build, во время которой осуществляется построение индексов. Если строки не удовлетворяют условию уникальности, то они отклоняются. Сообщение об этих строках записывается в файл сообщений. Однако сами строки удаляются на следующей фазе.

3.  Delete, во время которой строки, которые не удовлетворяют условию уникальности удаляются.

Примеры использования утилиты Load:

Пример 1:

DB2 LOAD FROM stafftab.ixf OF IXF MESSAGES staff.msgs INSERT INTO userid.staff

Пример 2:

DB2 LOAD FROM delfile1 OF DEL METHOD P (1, 2, 3, 4, 5, 6, 7, 8, 9)

INSERT INTO table1 (BLOB1, S2, I3, Int 4, I5, I6, DT7, I8, TM9)

Пример 3:

TABLE1 включает 5 колонок:

v COL1 VARCHAR 20 NOT NULL WITH DEFAULT

v COL2 SMALLINT

v COL3 CHAR 4

v COL4 CHAR 2 NOT NULL WITH DEFAULT

v COL5 CHAR 2 NOT NULL

ASCFILE1 включает 6 записей:

ELE1 позиции 01 to 20

ELE2 позиции 21 to 22

ELE5 позиции 23 to 23

ELE3 позиции 24 to 27

ELE4 позиции 28 to 31

ELE6 позиции 32 to 32

ELE6 позиции 33 to 40

Записи с данными в загружаемом файле:

1...  5....  10...    15...  20...     25...      30...35...40

Test data 1                     XXN 123abcdN

Test data 2 and   3        QQY       wxyzN

Test data 4,5 and 6       WWN6789     Y

Для того чтобы загрузить данные из рассматриваемого файла в заданную таблицу необходимо выполнить следующую команду:

DB2 LOAD FROM ascfile1 OF ASC MODIFIED BY striptblanks reclen=40

METHOD L (1 20, 21 22, 24 27, 28 31)

NULL INDICATORS (0,0,23,32)

INSERT INTO table1 (col1, col5, col2, col3)

Спецификатор striptblanks в параметре MODIFIED BY означает обрезание пробелов в колонках типа VARCHAR. Например, Col1 содержит данные разной длины:  11, 17 и 19 байт в первой, второй и третьей строке соответственно.

Спецификатор reclen=40 в параметре MODIFIED BY означает, что в конце каждой записи нет символа конца строки и каждая запись имеет длину 40 байт. Последние 8 байт не используются  для загрузки таблицы.

Контрольные вопросы:

1.  В каком формате находится файл со следующими данными:

Smith, Bob              4973               15.46

Jones, Suzanne        12345             16.34

Williams, Sam         452123         193.78

2.  В каком формате находится файл со следующими данными:

"Smith, Bob",4973,15.46

"Jones, Bill",12345,16.34

"Williams, Sam",452,193.78

3.  Что означают методы импортирования L, N и P? Приведите примеры.

4.  Продемонстрируйте на компьютере, как из CLP вызывается команда экспортирования таблицы в файл.

5.  Где можно размещать файлы для утилит Import, Export и Load?

6.  Какая команда работает быстрее Import или Load и почему?

7.  Какие ограничения проверяются при использовании утилиты Load: уникальность, check-ограничения, ссылочные ограничения?

8.  Поясните разницу в режимах импортирования INSERT, INSERT_UPDATE, REPLACE и REPLACE_CREATE?

9.  Должна ли существовать таблица(ы) в базе данных к началу операции Import?

10.  Должна ли существовать таблица(ы) в базе данных к началу операции Load?