码文件和IXF文件格式。LOAD不支持WSF文件作为数据导入文件。
7.5 LOAD的三个阶段
与IMPORT相比,LOAD虽然在速度上有明显的优势,但对管理上的要求比较高。LOAD可以分成三个阶段。
第一个阶段叫LOAD阶段。在这个阶段中,数据被导入到表中,如果表上有索引存在,LOAD将按照索引定义搜集索引关键字,然后进行排序。如果有不符合表定义的数据行,LOAD将会把它们放到一个文件(DUMP FILE)中,同时在消息文件(MESSAGE FILE)中进行记录。如果在命令中指定了SAVECOUNT参数,LOAD将每隔一定数目的数据行进行一次保存。
第二个阶段叫BUILD阶段。在这个阶段中,LOAD会利用在LOAD阶段搜集的索引关键字构造索引。如果表上没有索引,这个过程将被忽略。另外,如果表上定义了唯一性约束,LOAD会在这个阶段进行检查。如果有违反唯一性约束的数据行,LOAD将会把它们拷贝到一个特殊的表—例外表(Exception Table)中。相应的信息会保存在信息文件(MESSAGE FILE)中。
第三个阶段叫DELETE阶段。在这个阶段中,所有违反唯一性约束的行将被从表中删除。
7.6 LOAD的语法
LOAD的语法比较复杂,我们在这里只介绍一些主要的参数。
.-,————-.
V |
>>-LOAD FROM——+-filename-+–+–OF–filetype—————>
+-pipename-+
‘-device—‘
>–+—————————–+————————->
| .-,———–. |
| V | |
‘-LOBS FROM—–lob-path—+–‘
>–+———————————–+——————->
| .—————–. |
| V | |
‘-MODIFIED BY—–filetype-mod—+–‘
>–+———————————————————————————————+>
| .-,—————————. |
| V | |
‘-METHOD–+-L–(—–column-start–column-end—+—)-+———————————–+-+-‘
| | .-,—-. | |
| | V | | |
| ‘-NULL INDICATORS–(—–n—+—)–‘ |
| .-,————–. |
| V | |
+-N–(—–column-name—+—)—————————————————-+
| .-,——————. |
| V | |
‘-P–(—–column-position—+—)————————————————‘
>–+—————+—+————–+———————->
‘-SAVECOUNT–n–‘ ‘-ROWCOUNT–n–‘
>–+——————+—+————————-+——–>
‘-WARNINGCOUNT–n–‘ ‘-MESSAGES–message-file–‘
>–+——————————–+—+-INSERT—-+——–>
‘-TEMPFILES PATH–temp-pathname–‘ +-REPLACE—+
+-RESTART—+
‘-TERMINATE-‘
>–INTO–table-name—-+——————————+——->
| .-,—————-. |
| V | |
‘-(—–insert-column—+—)–‘
>–+——————————————–+————>
‘-DATALINK SPECIFICATION–| datalink-spec |–‘
>–+—————————-+—————————->
‘-FOR EXCEPTION–table-name–‘
>–+——————————————————————————————+>
| .-YES-. |
‘-STATISTICS–+-+—–+–+-+——————————————————–+-+-+–‘
| | ‘-WITH DISTRIBUTION–+——————————–+–‘ | |
| | ‘-AND–+——— +–INDEXES ALL–‘ | |
| | ‘-DETAILED-‘ | |
| ‘-+—————————————+——————‘ |
| ‘–+-AND-+—+———-+–INDEXES ALL–‘ |
| ‘-FOR-‘ ‘-DETAILED-‘ |
‘-NO———————————————————————-‘
>–+——————————————————————+>
| .-NO—————————————————–. |
+-COPY–+-YES–+-USE ADSM–+—————————+——-+-+-+
| | ‘-OPEN–num-sess–SESSIONS–‘ | |
| | .-,——————-. | |
| | V | | |
| +-TO—–device/directory—+——————-+ |
| ‘-LOAD–lib-name–+—————————+-‘ |
| ‘-OPEN–num-sess–SESSIONS–‘ |
‘-NONRECOVERABLE—————————————————‘
>—+—————+—+——————–+—————->
‘-HOLD QUIESCE–‘ ‘-WITHOUT PROMPTING–‘
>—–+—————————+—+———————+—>
‘-DATA BUFFER–buffer-size–‘ ‘-CPU_PARALLELISM–n–‘
>—+———————-+———————————->
‘-DISK_PARALLELISM–n–‘
>—+———————————+———————-><
‘-INDEXING MODE–+-AUTOSELECT–+–‘
+-REBUILD—–+
+-INCREMENTAL-+
‘-DEFERRED—-‘
命令参数:
OF filetype:
指定导入数据文件的类型。LOAD支持三种文件格式(ASC、DEL ASC、 PC/IXF )。WSF文件格式不被LOAD所支持。
MODIFIED BY filetype-mod:
指定一些额外的参数。
SAVECOUNT n:
每隔多少数据行进行一次保存。防止在LOAD失败后,还需要从头导入数据。比如,设定n为100,则系统每隔100条记录就进行一次提交,将导入的数据保存下来。如果在导入到531条记录时出现了错误,因为已经保留了500条记录,只需要从第501条记录开始导入就可以了。
ROWCOUNT n:
只导入前n行记录。比如一个数据文件中包含10000条记录,如果只想导入前1000条记录,指定n为1000即可。
WARNINGCOUNT n:
在LOAD过程中,如果出现n个警告信息后自动停止LOAD过程。
MESSAGE msg-file:
用于指定在LOAD过程中生成的警告信息和错误信息的存储文件,如果没有指定,信息将被输出到标准输出(如屏幕)上。一般来说,在LOAD完成后,应该检查该文件中的信息。
INSERT:
数据导入的模式,如果原来表中有数据,在不破坏表中数据的情况下进行数据导入。
REPLACE:
数据导入的模式,如果原来表中有数据,先将表中的数据清空,然后进行数据导入
RESTART:
如果LOAD被意外中止,重新启动LOAD过程。后面章节会详细解释。
TERMINATE:
如果LOAD被意外中止,中断LOAD过程。后面章节会详细解释。
FOR EXCEPTION table-name:
指定例外表名,用于保存违反唯一性冲突的行。
STATISTICS YES:
在LOAD过程搜集表上的统计信息
COPY YES|COPY NO|NONREVERABLE
7.7 注意事项
IMPORT和LOAD在功能上相似,但在实现方式和使用上有很大不同,我们将通过下表将这两中工具进行一下对照。
IMPORT |
LOAD |
说明 |
在导入大量数据时速度较慢 |
在导入大量数据时速度明显比IMPORT快 |
LOAD是将数据格式化成数据页的形式直接写入数据库 |
如果使用IXF文件格式,表和索引可以不存在 |
在导入数据之前,表和索引必须存在 |
IMPORT可以在导入数据时创建表和索引 |
支持WSF文件格式 |
不支持WSF文件格式 |
|
能够对表和视图进行IMPORT |
LOAD的对象必须是表 |
|
在进行IMPORT时,其他程序能够对表进行存取 |
在进行LOAD时,其他程序不能对表进行存取 |
LOAD将导入数据的表所在表空间置为排它状态 |
导入的所有数据都被日志所记录 |
LOAD只做极少量的日志 |
|
IMPORT会激活触发器 |
LOAD不会激活触发器 |
|
IMPORT可以使用COMMITCOUNT参数指定每隔一定数目的数据行就进行一次提交,如果IMPORT失败,可以从最后的一次提交点重新开始。 |
LOAD可以使用SAVECOUNT参数指定每隔一定数目的数据行就进行一次保存,如果LOAD失败,可以从最后的一次提交点重新开始。 |
|
IMPORT使用的是数据库内部的临时表空间 |
LOAD使用的是数据库以外的临时空间 |
|
所有的约束在IMPORT过程中都将被总结 |
在LOAD过程中只检查唯一性约束 |
LOAD关闭约束检查,需要在LOAD后用SET INTEGERITY消除表上的CHECK PENDING状态 |
在IMPORT过程中,当每一行被导入时,索引关键字被插入到索引中 |
在LOAD过程中,LOAD在LOAD阶段搜集索引关键字,在BULID阶段统一生成索引 |
|
如果需要重新搜集统计信息,在IMPORT后使用RUNSTAT工具 |
如果需要重新搜集统计信息,可以在LOAD后使用RUNSTAT工具,也可以在LOAD过程中进行搜集 |
在LOAD中直接搜集统计信息会延长LOAD所需时间 |
IMPORT能够被DB2 Connect支持 |
LOAD能够被DB2 Connect支持 |
如果要向主机或AS/400上的数据库导入数据,用IMPORT |
数据导入文件必须在执行IMPORT的节点上 |
数据导入文件必须在要导入数据的数据库所在的节点上 |
|
IMPORT不需要备份 |
根据复制选项的不同,可能需要进行备份 |
IMPORT导入的数据在日志中会有记录 |
以下文章点击率最高
Loading…