以 Express 方式加载数据

Express® 方式支持数据快递加载到没有索引的表中。在日志记录的数据库中,只有 RAW 表能使用此方式。

Warning: 支持事务日志记录的数据库中的 STANDARD 表不允许 Express 方式加载。
注:

Express 方式加载使用轻量级追加,它绕过缓冲池。轻量级追加消除与缓冲管理器相关的开销但不日志记录数据。在 express 方式,数据库服务器会自动排他锁定该表。其它用户不能存取该表。

无论您是否使用DELUXE 关键字,数据库服务器使用 express 方式,除非目标表有索引或者目标表是 STANDARD 表。

如果您定义了 RAW 类型表并在加载数据后没有定义任何索引,则可以对此没有数据的新建的表使用 express 方式。如果您不希望在支持事务日志记录的数据库中使用,请选择 RAW 表。

要为现有的表准备 express 方式加载,请删除所有的索引,并确保表类型是 RAW

从外部表加载数据到 raw 表不会被日志记录;因此,您必须在删除数据库之前执行零级备份。如果您在执行零级备份之前尝试删除数据库,则数据库服务器发出 ISAM 错误error -197,如下所示:
Partition recently appended to; can't open for write or logging
        
考虑具有以下结构的表:
TABLE employee (
          name CHAR(18),
          hiredate DATE,
          address CHAR(40),
          empno INTEGER);

在现有表上使用 express 方式加载

  1. 更改表类型从而允许快速加载。
    ALTER TABLE employee TYPE (RAW);
  2. 创建外部表描述。
    CREATE EXTERNAL TABLE emp_ext 
                SAMEAS employee
                USING (
                FORMAT 'DELIMITED',
                DATAFILES 
                ("DISK:/work2/mydir/emp.dat"),
                REJECTFILE "/work2/mydir/emp.rej",
                EXPRESS
                );
  3. 加载该表。
    INSERT INTO employee SELECT * FROM emp_ext;

    如果数据库服务器选择 express 方式,当目标表包含索引、约束或者任意其它问题条件时,加载停止并发出错误消息。

  4. 创建零级备份。

    因为数据是未日志记录的,您必须执行零级备份以允许数据复原。如果磁盘失败,则您无法自动恢复数据。需要使用最近的零级备份文件。

如果表类型是 RAW (未日志记录,则忽略 BEGIN WORKCOMMIT WORK 语句。

注: 如果您删除表中的很多行,然后以 EXPRESS 方式向表加载很多新行,则该表大小增加,因为轻量级追加在表的末尾插入行,并且它不拒绝表内的空白。(不管您是否指定 EXPRESS 方式,如果表由很多已删除的行,则该加载可能选择 DELUXE 方式填充到该空间。)