LOAD 命令
LOAD 命令可高效地将大量数据装入到 Db2® 表中。
LOAD 命令在页面级别装入数据,绕过触发器触发和日志记录,并延迟约束检查和索引构建,直到将数据装入到 Db2 表中为止。
存储在服务器上的数据可以是文件、磁带或命名管道的格式。 存储在远程连接的客户机上的数据可以采用标准文件或命名管道的形式。 还可以从用户定义的游标或使用用户编写的脚本或应用程序装入数据。 如果表的 COMPRESS
属性设置为 YES
,那么装入的数据将进行压缩。 此压缩适用于表中存在字典的所有数据和数据库分区,包括表的 XML 存储对象中的数据。
快速链接到 装入实用程序的文件类型修饰符。
限制
装入实用程序不支持在层次结构级别装入数据。 装入实用程序与范围集群表不兼容。 装入实用程序不支持 CREATE TABLE 或 ALTER TABLE 语句的 NOT LOGGED INITIALLY 参数。
作用域
可以在单个请求中针对多个数据库分区发出此命令。
授权
- 对于数据库的 DATAACCESS 权限
- 对表模式的 DATAACCESS 权限
- 对数据库的 LOAD 权限或对模式的 LOAD 权限以及以下特权:
- 以下列方式调用装入实用程序时对表的 INSERT 或 INSERTIN 特权:
- INSERT 方式
- TERMINATE 方式(用于结束先前的装入插入操作)
- RESTART 方式(用于重新启动先前的装入插入操作)
- 在以下方式中调用装入实用程序时,对表的 INSERT 和 DELETE 特权或对模式的 INSERTIN 和 DELETEIN 特权:
- REPLACE 方式
- TERMINATE 方式(用于结束先前的装入替换操作)
- RESTART 方式(用于重新启动先前的装入替换操作)
- 对异常表的 INSERT 特权或对包含异常表的模式的 INSERTIN 特权,如果此表用作装入操作的一部分。
- 以下列方式调用装入实用程序时对表的 INSERT 或 INSERTIN 特权:
- 要将数据装入到包含受保护列的表中,会话授权标识必须具有 LBAC 凭证。 这些凭证可以是直接或间接的,通过允许对表中所有受保护列进行写访问的一个组或一个角色。 否则,装入失败并返回错误 (SQLSTATE 5U014)。
- 要将数据装入到包含受保护行的表中,会话授权标识必须保存满足以下条件的安全标号:
- 安全标号是保护表的安全策略的一部分。
- 安全标号已直接或间接通过用于写访问或所有访问的组或角色授予会话授权标识。
将数据装入到具有受保护行的表中时,目标表将有一个数据类型为 DB2SECURITYLABEL 的列。 如果输入数据行不包含该列的值,那么将拒绝该行,除非在装入命令中指定了
usedefaults
文件类型修饰符。 在这种情况下,使用了为保护表的安全策略的写访问而保留的安全标号。 如果没有对应写访问权的安全标号,那么该行将被拒绝,并且处理会继续进至下一行。 - 对于具有受保护行的表,如果指定了 REPLACE 选项,那么会话授权标识必须有权删除该表。
- 如果指定了 LOCK WITH FORCE 选项,那么需要任何 SYSMAINT、SYSCTRL 或 SYSADM 权限。
- 如果对表激活了行访问控制,那么该表上的 LOAD REPLACE 将需要删除该表的能力。 具体而言,您必须对表或 DROPIN 具有 CONTROL 权限,或对包含表的模式具有 SCHEMAADM 权限,或对表具有 DBADM 权限。
Db2 服务器进程 (包括所有装入进程) 由实例所有者拥有。 因为这些进程使用实例所有者的标识来访问所需的文件,所以实例所有者需要对输入数据文件的读访问权。 这些输入数据文件必须由实例所有者读取,而不管谁运行该命令。
需要的连接
数据库。 如果启用了隐式连接,那么将建立与缺省数据库的连接。
实例。 不需要显式连接。 如果建立了与数据库的连接,那么将尝试对本地实例进行隐式连接。
命令语法
命令参数
- CLIENT
- 指定要装入的数据存在于远程连接的客户机上。 如果未从远程客户机运行装入操作,那么将忽略此选项。 如果使用 CURSOR 文件类型指定此选项,那么将忽略此选项。注:
- 即使指定了 CLIENT 关键字, dumpfile 和 lobsinfile 修饰符以及 XML FROM 选项也会引用服务器上的文件。
- 在远程装入操作期间未执行代码页转换。 如果数据的代码页与服务器的代码页不同,请通过使用
codepage
修饰符来指定数据代码页。 - 不推荐使用将 CLIENT 关键字与远程存储对象一起指定并在远程主机上运行,并且会在将来的发行版中停止使用该关键字。 请参阅不推荐使用的功能 11.5.7。 当 DB2_ENABLE_COS_SDK 注册表变量设置为 ON 时,具有远程存储别名并在远程主机上静默运行的 LOAD CLIENT 将使用现有 libcurl 方法(受制于其已知的限制)。 请参阅 DB2_ENABLE_COS_SDK。
在以下示例中,远程连接的客户机上存在的数据文件 (/u/user/data.del) 将装入到服务器数据库上的 MYTABLE 中:db2 load client from /u/user/data.del of del modified by codepage=850 insert into mytable
- FROM filename | remotefilename | pipename | device | cursorname
- 指定包含要装入的数据的 SQL 语句的文件、管道、设备或游标。 如果输入源是文件,管道或设备,那么它必须存在于数据库所在的数据库分区上,除非指定了 CLIENT 选项。 远程文件名是指位于远程存储(如IBM® Cloud Object Storage或Amazon Simple Storage ServiceS3))上的文件,可通过存储访问别名进行访问。 需要本地登台空间来临时存储从远程存储服务器传输的文件; 请参阅 远程存储需求。 远程文件名的语法为:
DB2REMOTE://<alias>/<container>/<object>
如果指定了多个名称,那么将按顺序处理这些名称。 如果指定的最后一项是磁带设备,那么将提示用户使用另一磁带。 以下列表显示有效的响应选项:- c
- 继续使用生成警告消息的设备(例如,安装新磁带时)。
- d
- 停止使用生成警告消息的设备(例如,当您没有更多磁带时)。
- t
- 停止所有设备。
注:- 使用标准文件名。 如果服务器是远程服务器,那么必须使用标准文件名。 如果数据库存在于与调用者相同的数据库分区上,那么可以使用相对路径。
- 如果将数据导出到具有 EXPORT command using the ADMIN_CMD procedure的文件中,那么该数据文件由受防护的用户标识拥有。 实例所有者通常无法访问此文件。 要从 CLP 或 ADMIN_CMD 过程运行 LOAD,数据文件必须可由实例所有者标识访问。 因此,必须向实例所有者授予对数据文件的读访问权。
- 如果文件在物理上是分开的,但在逻辑上却是一个文件,那么支持从多个 IXF 文件装入数据。 如果文件在逻辑上和物理上都是分开的,那么不受支持。 如果指定了多个逻辑上和物理上分开的文件,那么将忽略第一个文件之后的任何文件。 (多个物理文件将被视为一个逻辑文件 I 您使用 EXPORT 命令的一次调用创建了这些文件。)
- 如果装入客户机计算机上存在的数据,那么数据必须是标准文件或命名管道的格式。
- 当您将文件中的 XML 数据装入到分区数据库环境中的表中时,XML 数据文件必须对所有装入正在进行装入的数据库分区都是可访问的。
- 如果启用了 DB2_LOAD_RESTRICTED_IO_PATH,并且指定了文件名,那么文件必须存在于受限路径中。
- OF filetype
- 指定数据的格式:
- ASC(非定界 ASCII 格式)
- DEL(定界 ASCII 格式)
- IXF (Integration Exchange 格式, PC 版本) 是由 Db2 数据库独占使用的二进制格式。
- CURSOR(针对 SELECT 或 VALUES 语句声明的游标)。
注:- 使用 CURSOR 文件类型将 XML 数据装入分布式数据库环境中的表中时,不支持 PARTITION_ONLY 和 LOAD_ONLY 方式。
- 使用 CURSOR 文件类型运行 LOAD 命令时,请注意以下差异:
- 如果在 DECLARE CURSOR 语句期间指定了 DATABASE 关键字,那么 LOAD 命令将在内部创建单独的应用程序以访存数据。
- 如果在 DECLARE CURSOR 语句期间未指定 DATABASE 关键字,那么 LOAD 命令将访存同一应用程序中的数据。
这两个案例之间的差异也会导致锁定行为差异。 尤其是,如果满足以下条件,那么可能会创建锁定(例如,锁定等待或锁定超时,具体取决于数据库配置):- 为与当前连接的数据库相同的数据库指定 DATABASE 关键字。
- 使用相同的用户标识和密码连接到与当前连接相同的数据库。
此锁定问题的变通方法是省略 DATABASE 关键字。
- LOBS FROM lob-path
- 包含要装入的 LOB 值的数据文件的路径。 路径必须以斜杠结尾。 如果指定了 CLIENT 选项,那么路径必须是标准路径。 LOB 数据文件的名称存储在装入到 LOB 列中的主数据文件 (ASC , DEL 或 IXF) 中。 可以指定的最大路径数为 999。 此子句隐式激活 LOBSINFILE 行为。
当使用 CURSOR 文件类型指定时,将忽略此选项。
如果启用了 DB2_LOAD_RESTRICTED_IO_PATH,那么 lob-path 必须存在于受限路径中。
- MODIFIED BY file-type-mod
- 指定文件类型修饰符选项。 请参阅 装入实用程序的文件类型修饰符。
- METHOD
- L
- 指定要从中装入数据的起始和结束列号。 列号是从一行数据开始的字节偏移量。 从 1 开始编号。 此方法只能与 ASC 文件一起使用,并且是该文件类型的唯一有效方法。
- NULL INDICATORS null-indicator-list
- 仅当指定了 METHOD L 参数(以指示输入文件是 ASC 文件)时,才能使用此选项。 空指示符列表是以逗号分隔的正整数列表,该列表指定每个空指示符字段的列号。 列号是从一行数据开始的空指示符字段的字节偏移量。 空指示符列表必须包含 METHOD L 参数中定义的每个数据字段的一个条目。 列数为零表示相应的数据字段始终包含数据。
NULL 指示符列中的值
Y
指定列数据为 NULL。 NULL 指示符列中除了Y
的任何字符指定列数据不是 NULL,并装入由 METHOD L 选项指定的列数据。可以通过使用 MODIFIED BY 选项更改 NULL 指示符字符。
- N
- 指定要装入的数据文件中列的名称。 这些列名的大小写必须与系统目录中相应名称的大小写匹配。 不可空的每个表列都必须在 METHOD N 列表中具有相应的条目。 例如,假定数据字段为 F1、F2、F3、F4、F5 和 F6,表列为 C1 INT、C2 INT NOT NULL、C3 INT NOT NULL 和 C4 INT。 在此场景中,
method N (F2, F1, F4, F3)
是有效请求。 但是,method N (F2, F1)
不是有效请求。 此方法只能与文件类型 IXF 或 CURSOR 一起使用。 - P
- 指定要装入的输入数据字段的字段号(编号为 1)。 不可空的每个表列都必须在 METHOD P 列表中具有相应的条目。 例如,假定数据字段为 F1、F2、F3、F4、F5 和 F6,表列为 C1 INT、C2 INT NOT NULL、C3 INT NOT NULL 和 C4 INT。 在此场景中,
method P (2, 1, 4, 3)
是有效请求。 但是,method P (2, 1)
不是有效请求。 此方法只能与文件类型 IXF、DEL 或 CURSOR 一起使用,并且是 DEL 文件类型的唯一有效方法。对于method P
指定的每个字段,必须在操作语句中定义相应的列。 如果计算所有列或将装入第一个 x 列,那么可以取消此需求。 此场景显示在以下示例中:db2 load from datafile1.del of del method P(1, 3, 4) replace into table1 (c1, c3, c4)
- XML FROM xml-path
- 指定一个或多个包含 XML 文件的路径。 在装入到 XML 列的列中,XDS 包含在主数据文件(ASC、DEL 或 IXF)中。
如果启用了 DB2_LOAD_RESTRICTED_IO_PATH,那么 xml-path 必须存在于受限路径中。
- XMLPARSE
- 指定如何解析 XML 文档。 如果未指定此选项,那么 XML 文档的解析行为由 CURRENT IMPLICIT XMLPARSE OPTION 专用寄存器的值确定。
- STRIP WHITESPACE
- 指定在解析 XML 文档时移除空格。
- PRESERVE WHITESPACE
- 指定在解析 XML 文档时不移除空格。
- XMLVALIDATE
- 指定在适用时针对模式验证 XML 文档。
- USING XDS
- 将针对 XML 模式验证 XML 文档,该模式由主数据文件中的 XML 数据说明符 (XDS) 标识。 缺省情况下,如果 XMLVALIDATE 选项与 USING XDS 子句配合使用,那么用于验证的模式由 XDS 的 SCH 属性确定。 如果在 XDS 中不存在 SCH 属性,那么不会发生模式验证,除非 DEFAULT 子句指定了缺省模式。DEFAULT、IGNORE 和 MAP 子句可用于修改模式确定行为。 这三个可选子句直接应用于 XDS 的规范,而不适用于彼此。 例如,如果选择了模式,因为它由 DEFAULT 子句指定,那么它也不会被忽略(如果它也由 IGNORE 子句指定)。 同样,如果满足以下条件,那么不会重新映射模式:
- 将选择该模式,因为它被指定为 MAP 子句中一对的第一部分。
- 该模式也在另一个 MAP 子句对的第二部分中指定。
- USING SCHEMA schema-sqlid
- 将针对具有指定 SQL 标识的 XML 模式验证 XML 文档。 在这种情况下,将忽略所有 XML 列的 XDS 的 SCH 属性。
- USING SCHEMALOCATION HINTS
- 将根据源 XML 文档中 XML 模式位置提示所标识的模式来验证 XML 文档。 如果在 XML 文档中找不到 schemaLocation 属性,那么不会进行验证。 指定 USING SCHEMALOCATION HINTS 子句时,将忽略所有 XML 列的 XDS 的 SCH 属性。
- IGNORE schema-sqlid
- 仅当指定了 USING XDS 参数时,才能使用此选项。 IGNORE 子句指定一个或多个模式的列表以忽略它们是否由 SCH 属性标识。 如果满足以下两个条件,那么装入的 XML 文档不会发生模式验证:
- 已装入 XML 文档的 XML 数据说明符 (XDS) 中存在 SCH 属性。
- SCH 属性标识的模式包含在要忽略的模式列表中。
注:如果在 IGNORE 子句中指定了模式,那么它也不能存在于 MAP 子句中模式对的左侧。
IGNORE 子句仅适用于 XDS。 稍后不会忽略由 MAP 子句映射的模式,如果它由 IGNORE 子句指定。
- DEFAULT schema-sqlid
- 仅当指定了 USING XDS 参数时,才能使用此选项。 DEFAULT 子句中指定的模式标识用于在 XML 文档的 XDS 不包含标识 XML 模式的 SCH 属性时用于验证的模式。
DEFAULT 子句优先于 IGNORE 和 MAP 子句。 如果 XDS 满足 DEFAULT 子句,那么将忽略 IGNORE 和 MAP 规范。
- MAP schema-sqlid
- 仅当指定了 USING XDS 参数时,才能使用此选项。 使用 MAP 子句来指定备用模式,以代替 XDS 的 SCH 属性为每个装入的 XML 文档指定的模式。 MAP 子句指定一个或多个模式对的列表,其中每一个人对表示一个模式到另一个模式的映射。 该对中的第一个模式表示由 XDS 中的 SCH 属性引用的模式。 该对中的第二个模式表示要用于模式验证的模式。
如果模式在 MAP 子句中的模式对左侧存在,那么也不能在 IGNORE 子句中指定该模式。
应用模式对映射后,结果为最终结果。 映射操作是非传递的。 因此,选择的模式稍后不会应用于另一个模式对映射。
模式不能映射超过一次,这意味着它不能出现在多个对的左侧。
- SAVECOUNT n
- 指定装入实用程序将在每个 n 行后建立一致性点。 此值将转换为页面计数,并向上舍入到扩展数据块大小的时间间隔。 由于在每个一致性点都发出一条消息,如果使用 LOAD QUERY 监视装入操作,那么选择此选项。 如果 n 的值不够高,那么在每个一致性点执行的活动同步可能会影响性能。
缺省值为零,表示除非必要,否则不建立一致性点。
当使用 CURSOR 文件类型或装入包含 XML 列的表时,不允许此选项。
按列组织的 表不支持 SAVECOUNT 参数。
- ROWCOUNT n
- 指定要装入的文件中的 n 个物理记录数。 如果启用了
anyorder
文件类型修饰符,那么可以从文件装入任何 n 行。 否则,将装入第一个 n 行。 - WARNINGCOUNT n
- 在 n 次警告后停止装入操作。 如果不需要任何警告,请设置此参数,但您希望验证是否使用了正确的文件和表。 如果错误地指定了装入文件或目标表,那么装入实用程序将为其尝试装入的每一行生成警告,这会导致装入失败。 如果 n 为零,或者未指定此选项,那么装入操作将继续,而不管发出了多少警告。
- MESSAGES message-file
- 为装入操作期间发生的警告和错误消息指定目标。 如果未指定消息文件,那么消息将写入标准输出,除非该实例配置为分区数据库环境。 如果未指定文件的完整路径,那么装入实用程序将使用当前目录和缺省驱动器作为目标。 如果指定现有文件的名称,那么该实用程序会追加信息。
消息文件通常在装入操作结束时使用消息进行填充。 因此,它不适合用于监控操作的进度。
- TEMPFILES PATH temp-pathname
- 指定在装入操作期间创建临时文件时要使用的路径的名称,并且必须是根据服务器数据库分区的标准路径。临时文件占用文件系统空间。 有时,这种空间需求是巨大的。 以下列表提供了为所有临时文件分配的文件系统空间的估算:
- 装入实用程序生成的每条消息为 136 个字节。
- 如果数据文件包含长字段数据或 LOB,那么为 15 KB。 如果指定 INSERT 参数并且表已具有大量长字段或 LOB 数据,那么此数量会显着增加。
- 在服务器上,如果满足以下条件,那么存储空间相当于输入数据的原始大小:
- 要构建列压缩字典。
- 无法重新打开数据源(如管道或套接字)。
- INSERT
- 将装入的数据添加到表,而不更改现有表数据。
缺省情况下,对 按列组织的 表执行的 LOAD INSERT 操作会更新表统计信息 (如果该表是新表或已被截断,并且在装入操作开始时为空)。
- REPLACE
- 删除表中的所有数据,并插入新数据。 表定义和索引定义未更改。 如果在层次结构之间移动数据时指定此参数,那么只能替换整个层次结构的数据,而不是单个子表。
不能使用此参数将数据装入系统周期时态表。
缺省情况下,对 按列组织的 表的 LOAD REPLACE 操作会更新表统计信息。
- KEEPDICTIONARY
- 将在 LOAD REPLACE 操作中保留现有压缩字典。
此选项是 按行组织的 表的缺省值。
如果表 COMPRESS 属性为 YES,那么新替换的数据将使用在调用装入之前存在的字典进行压缩。 如果满足以下条件,那么通过使用要替换到表中的数据来构建新字典:- 先前在表中不存在字典。
- 表 COMPRESS 属性为 YES。
在此情况下构建压缩字典所需的数据量受 ADC 策略的约束。 此数据作为解压缩数据填充到表中。 在将字典插入到表中之后,要装入的剩余数据将受此字典压缩。 有关摘要,请参阅下表。
表 1. LOAD REPLACE KEEPDICTIONARY 关键字。 压缩 表行 Data Dictionary 存在 XML 存储对象字典存在1 压缩字典 数据压缩 YES YES YES 保留表行数据和 XML 字典。 要装入的数据需要压缩。 YES YES 否 保留表行 Data Dictionary 并构建新的 XML 字典。 对要装入的表行数据进行压缩。 构建 XML 字典之后,对要装入的剩余 XML 数据进行压缩。 YES 否 YES 构建表行 Data Dictionary 并保留 XML 字典。 构建表行 Data Dictionary 之后,对要装入的剩余表行数据进行压缩。 对要装入的 XML 数据进行压缩。 YES 否 否 构建新的表行数据和 XML 字典。 构建字典之后,对要装入的剩余数据进行压缩。 否 YES YES 保留表行数据和 XML 字典。 未压缩要装入的数据。 否 YES 否 保留表行 Data Dictionary。 未压缩要装入的数据。 否 否 YES 对表行字典没有影响。 保留 XML 字典。 未压缩要装入的数据。 否 否 否 没有影响。 未压缩要装入的数据。 注:- 仅当满足以下任一条件时,才能为表的 XML 存储对象创建压缩字典:
- XML 列将添加到 Db2 V 9.7 或更高版本中的表。
- 通过使用联机表移动来迁移表。
- 如果 LOAD REPLACE KEEPDICTIONARY 操作中断,那么在发出 LOAD RESTART 或 LOAD TERMINATE 之后,装入实用程序可以恢复。 从中断的 LOAD REPLACE KEEPDICTIONARY 操作恢复后,无法保留现有 XML 存储对象字典。 如果使用了 LOAD RESTART,那么将创建新的 XML 存储对象字典。
- RESETDICTIONARY
- 如果表 COMPRESS 属性为 YES,那么此伪指令指示 LOAD REPLACE 处理为表数据对象构建新字典。
如果 COMPRESS 属性为 NO,并且表中已存在字典,那么将移除该字典,并且不会将新字典插入到表中。
此选项是 按列组织的 表的缺省值。
对于按列组织的表,不能在数据库分区的子集上指定 LOAD REPLACE … RESETDICTIONARY (SQL27906N)。 如果包含 OUTPUT_DBPARTNUMS 选项,那么必须指定所有数据库分区。
只能使用一个用户记录来构建压缩字典。 如果装入的数据集大小为零且存在字典,那么不保留现有字典。 使用此伪指令构建字典所需的数据量不受 ADC 策略的限制。 有关摘要,请参阅下表。
表 2. LOAD REPLACE RESETDICTIONARY 关键字。 压缩 表行 Data Dictionary 存在 XML 存储对象字典存在1 压缩字典 数据压缩 YES YES YES 构建新的字典2。 如果在 CREATE TABLE 或 ALTER TABLE 语句上启用 DATA CAPTURE CHANGES 选项,那么将保留当前表行 Data Dictionary(并将其称为历史压缩字典)。 构建字典之后,对要装入的剩余数据进行压缩。 YES YES 否 构建新的字典2。 如果在 CREATE TABLE 或 ALTER TABLE 语句上启用 DATA CAPTURE CHANGES 选项,那么将保留当前表行 Data Dictionary(并将其称为历史压缩字典)。 构建字典之后,对要装入的剩余数据进行压缩。 YES 否 YES 构建新字典。 构建字典之后,对要装入的剩余数据进行压缩。 YES 否 否 构建新字典。 构建字典之后,对要装入的剩余数据进行压缩。 否 YES YES 移除字典。 未压缩要装入的数据。 否 YES 否 移除表行 Data Dictionary。 未压缩要装入的数据。 否 否 YES 移除 XML 存储对象字典。 未压缩要装入的数据。 否 否 否 没有影响。 所有表数据都未压缩。 注:- 仅当满足以下任一条件时,才能为表的 XML 存储对象创建压缩字典:
- XML 列将添加到 Db2 V 9.7 或更高版本中的表。
- 通过使用联机表移动来迁移表。
- 如果存在字典且已启用压缩属性,但不存在要装入表分区的记录,那么无法构建新字典。 在此场景中,RESETDICTIONARY 操作不会保留现有字典。
- 仅当满足以下任一条件时,才能为表的 XML 存储对象创建压缩字典:
- RESETDICTIONARYONLY
- 此选项创建基于输入文件且不装入任何行的列压缩字典。 在使用基于 SQL 的实用程序摄取任何数据之前,可以使用此选项来创建压缩字典。
此选项仅适用于 按列组织的 表。
不能在数据库分区的子集上指定 LOAD REPLACE … RESETDICTIONARYONLY (SQL27906N)。 如果包含 OUTPUT_DBPARTNUMS 选项,那么必须指定所有数据库分区。
- TERMINATE
- 装入实用程序可以运行的四种方式之一。 此方式将停止先前中断的装入操作,并将操作回滚至启动时的时间点,即使已传递一致性点也是如此。 操作中涉及的任何表空间的状态都将恢复为正常,并且所有表对象都是一致的。 索引对象可能标记为无效,在此情况下,会在下次访问时自动重建索引。 如果您正在结束 LOAD REPLACE 操作,那么在 LOAD TERMINATE 操作后,该表将截断为空表。 如果停止 LOAD INSERT 操作,那么该表将保留 LOAD TERMINATE 操作之后的所有其原始记录。 有关字典管理的摘要,请参阅表 3。
LOAD TERMINATE 选项不会从表空间中移除备份暂挂状态。
- RESTART
- 要点: 对于 Db2 V 11.5.8,不推荐使用 LOAD 命令的 RESTART 选项,将在将来的发行版或修订版包中停用此选项。 使用 LOAD TERMINATE 后跟 LOAD 来实现等效行为。
- INTO table-name
- 指定要将数据装入其中的数据库表。 此表不能是系统表、已声明的临时表或创建的临时表。 可以指定别名,也可以指定标准表名或不合格表名。 标准表名的格式为
schema.tablename
。 如果指定了未限定的表名,那么将使用当前模式限定该表。如果数据库表包含隐式隐藏列,那么必须指定是否在装入操作中包含隐藏列的数据。 使用下列其中一种方法来指示是否包含隐藏列的数据:- 使用 insert-column 来显式指定要在其中插入数据的列。
db2 load from delfile1 of del insert into table1 (c1, c2, c3,...)
- 使用某个隐藏列文件类型修饰符:指定 implicitlyhiddeninclude(如果输入文件包含隐藏列的数据)或 implicitlyhiddenmissing(如果输入文件未包含隐藏列的数据)。
db2 load from delfile1 of del modified by implicitlyhiddeninclude insert into table1
- 在数据移动实用程序遇到带有隐式隐藏列的表时,使用服务器端的 DB2_DMU_DEFAULT 注册表变量来设置缺省行为。 当实用程序假定包含隐式隐藏列时,请指定 IMPLICITLYHIDDENINCLUDE,或当实用程序假定不包含隐式隐藏列时,请指定 IMPLICITLYHIDDENMISSING。
db2set DB2_DMU_DEFAULT=IMPLICITLYHIDDENINCLUDE db2 load from delfile1 of del insert into table1
- 使用 insert-column 来显式指定要在其中插入数据的列。
- insert-column
- 指定要在其中插入数据的表列。装入实用程序无法解析名称包含一个或多个空格的列。 以下示例失败:
db2 load from delfile1 of del noheader method P (1, 2, 3, 4, 5, 6, 7, 8, 9) insert into table1 (BLOB1, S2, I3, Int 4, I5, I6, DT7, I8, TM9)
发生故障的原因是Int 4
列。 解决方案是将此类列名括在双引号中:db2 load from delfile1 of del noheader method P (1, 2, 3, 4, 5, 6, 7, 8, 9) insert into table1 (BLOB1, S2, I3, "Int 4", I5, I6, DT7, I8, TM9)
- FOR EXCEPTION table-name
- 指定将错误行复制到的异常表。 将复制违反唯一索引或主键索引的任何行。 如果指定了不合格的表名,那么表名是用当前模式限定的。 表不能是 按列组织的 表。
写入异常表的信息将不写入转储文件。 在分区数据库环境中,必须为定义了装入表的那些数据库分区定义异常表。 否则,转储文件包含无法装入的行,因为它们无效或存在语法错误。
装入 XML 数据时,在下列情况下,无法使用 FOR EXCEPTION 子句来指定装入异常表:- 使用基于标签的访问控制 (LBAC) 时。
- 将数据装入分区表时。
- NORANGEEXC
- 指示如果行由于范围违例而被拒绝,那么不会将其插入到异常表中。
- NOUNIQUEEXC
- 指示如果行由于它违反唯一约束而被拒绝,那么不会将其插入到异常表中。
- STATISTICS USE PROFILE
- 指示装入在装入期间根据为此表定义的概要文件收集统计信息。 收集统计信息是 按列组织 表的缺省行为。 必须先创建概要文件,然后再运行 LOAD 命令。 概要文件由 RUNSTATS 命令创建。 对于 按行组织的 表,如果概要文件不存在并且指定了此参数,那么将返回警告,并且不会收集任何统计信息。 对于 按列组织的 表,如果概要文件不存在并且指定了此参数,那么 LOAD 实用程序将使用在自动 RUNSTATS 操作期间使用的相同缺省 RUNSTATS 命令选项。
在装入期间,不会收集类型为 XML 的列的分布统计信息。
- STATISTICS NO
- 指定不收集统计信息,并且目录中的统计信息不会被更改。 此参数是 按行组织的 表的缺省值。
- COPY NO
- 指定如果启用了正向恢复,那么表所在的表空间将置于“备份暂挂”状态。 如果 logarchmeth1 或 logarchmeth2 配置参数设置为 OFF 以外的值,那么启用正向恢复。 COPY NO 选项还会将表空间状态置于“正在装入表空间”状态。 此状态(即瞬态)在装入完成或失败时消失。 在表空间备份或完全数据库备份完成之前,无法更新或删除表空间中任何表中的数据。 但是,可以通过使用 SELECT 语句来访问任何表中的数据。
在可恢复数据库上指定 COPY NO 会使表空间处于备份暂挂状态。 例如,如果使用 COPY NO 和 INDEXING MODE DEFERRED运行 LOAD ,那么需要刷新索引。 对该表的某些查询可能需要索引扫描,但这在刷新索引之前会失败。 如果索引存在于处于“备份暂挂”状态的表空间中,那么无法刷新索引。 在这种情况下,在进行备份之前,不允许访问表。 当查询访问索引时,数据库将自动执行索引刷新。
满足以下条件时,COPY NO 是缺省选项:- 未指定 COPY NO、COPY YES 或 NONRECOVERABLE。
- 数据库可恢复,即 logarchmeth1 或 logarchmeth2 配置参数设置为 OFF 以外的值时的情况。
- COPY YES
- 保存已装入数据的副本。 如果正向恢复已关闭,那么此参数无效。
- USE TSM
- 指定使用 IBM Tivoli® Storage Manager存储副本。
- OPEN num-sess SESSIONS
- 要用于 IBM Tivoli Storage Manager 或供应商产品的 I/O 会话数。 缺省值为 1。
- TO device/directory
- 指定在其上创建副本映像的设备或目录。
目录也可以是 DB2REMOTE 标识符 ,用于指定远程存储,但须遵守远程存储要求中列出的限制。
如果启用了 DB2_LOAD_RESTRICTED_IO_PATH,那么副本映像路径必须存在于受限路径中。- MULTIPARTSIZEMB
- 当 DB2_ENABLE_COS_SDK 注册表变量设置为 ON 时,将通过嵌入式供应商 Cloud Object Storage SDK 来促进与 Cloud Object Storage 的 Db2 远程存储器 通信。 远程存储器通信允许 Db2 将对象或文件流式传输到多个部分中的 Cloud Object Storage 。 此类型的流被称为多重部件上载。 此关键字指定副本映像的部件大小(以兆字节 (MB) 计),并覆盖在 MULTIPARTSIZEMB 数据库管理器配置参数中指定的值。 从 V 11.5.7开始,此选项仅在 Linux® (x86) 环境中可用。
- LOAD lib-name
- 包含要使用的供应商备份和复原 I/O 功能的共享库 (Windows 操作系统上的 DLL) 的名称。 它可以包含完整路径。 如果未提供完整路径,那么缺省路径是用户出口程序的位置。
- NONRECOVERABLE
- 指定装入事务将标记为不可恢复,并且无法通过后续的前滚操作进行恢复。 rollforward 实用程序将跳过事务,并将正在其中装入数据的表标记为
无效
。 该实用程序还会忽略针对该表的任何后续事务。 前滚操作完成后,此类表上唯一受支持的操作是:- 删除该表。
- 从备份(完整或表空间)恢复表,该备份是在完成不可恢复装入操作之后的落实点之后执行的。
使用此选项,表空间在装入操作后不会置于“备份暂挂”状态。 装入操作期间不会生成所装入数据的副本。 如果未指定 COPY NO, COPY YES或 NONRECOVERABLE 之一,并且数据库不可恢复 (logarchmeth1 和 logarchmeth2 都设置为 OFF) ,那么缺省值为 NONRECOVERABLE 。
- WITHOUT PROMPTING
- 指定数据文件列表包含要装入的所有文件,并且列出的设备或目录对于整个装入操作是足够的。 如果未找到连续输入文件,或者在装入操作完成之前已填充复制目标,那么装入操作将失败,并且表将保持为装入暂挂状态。如果未指定此选项,那么将在以下场景中提示您使用新磁带:
- 磁带设备遇到副本映像的磁带结束。
- 列出的最后一项是磁带设备。
- DATA BUFFER buffer-size
- 指定要用作在实用程序中传输数据的缓冲空间的 4 KB 页面数(不考虑并行度)。 如果指定小于算法最小值的值,那么将使用最低必需资源,并且不会返回警告。
此内存直接从实用程序堆分配,其大小可以通过 util_heap_sz 数据库配置参数进行修改。 从 V9.5 开始,如果系统中有更多内存可用,那么 LOAD 命令的 DATA BUFFER 选项的值可以临时超过 util_heap_sz。 在此情况下,将根据需要动态增大实用程序堆,直到达到 database_memory 限制为止。 装入操作完成后,将释放此内存。
如果未指定值,那么实用程序在运行时计算智能缺省值。 计算基于以下项:- 在装入器实例化时间内,实用程序堆中可用空间的百分比。
- 表的一些特征。
- SORT BUFFER buffer-size
- 此选项指定在装入操作期间覆盖 sortheap 数据库配置参数的值。 仅当装入具有索引的表时才相关,并且仅当 INDEXING MODE 参数未指定为 DEFERRED 时才相关。 指定的值不能超过 sortheap 的值。 当装入具有许多索引的表而不更改 sortheap 值时,此参数对于控制所使用的排序内存很有用,这也会影响常规查询处理。
- CPU_PARALLELISM n
- 指定装入实用程序在构建表对象时创建用于解析、转换和格式化记录的进程数或线程数。 此参数旨在使用每个数据库分区运行的进程数。 当您装入预先排序的数据时,此参数很有用,因为将保留源数据中的记录顺序。 如果此参数的值为零或未指定,那么装入实用程序将在运行时使用智能缺省值(通常基于可用 CPU 数量)。注:
- 如果此参数与包含 LOB 或 LONG VARCHAR 字段的表一起使用,那么其值将变为
1
,而不管系统 CPU 数量或用户指定的值。 - 为 SAVECOUNT 参数指定较小的值会导致装入器运行更多 I/O 操作来清空数据和表元数据。 当 CPU_PARALLELISM 大于 1 时,清空操作是异步的,这允许装入器将 CPU 资源最大化。 当 CPU_PARALLELISM 设置为 1 时,装入器在一致性点期间等待 I/O。 CPU_PARALLELISM 设置为 2 以及 SAVECOUNT 设置为 10 000 的装入操作完成的速度比与 CPU_PARALLELISM 设置为 1 的相同操作更快,甚至只有一个 CPU。
- 如果此参数与包含 LOB 或 LONG VARCHAR 字段的表一起使用,那么其值将变为
- DISK_PARALLELISM n
- 指定装入实用程序为将数据写入表空间容器而创建的进程数或线程数。 如果未指定值,那么实用程序将根据表空间容器的数量和表的特征来选择智能缺省值。
- INDEXING MODE
- 指定装入实用程序是重新构建索引还是以增量方式扩展索引。 以下值有效:
- AUTOSELECT
- 装入实用程序在 REBUILD 或 INCREMENTAL 方式之间自动决定。 该决策基于装入的数据量和索引树的深度。 与索引树的深度相关信息存储在索引对象中。 填充此信息不需要 RUNSTATS。 AUTOSELECT 是缺省索引方式。
- REBUILD
- 将重建所有索引。 实用程序必须具有足够的资源来对旧表数据和附加表数据的所有索引键部件排序。
如果打开了 LogIndexBuild 数据库配置参数,那么事务日志将在创建每个索引页面之后包含该映像。 如果关闭了 LogIndexBuild 数据库配置参数,那么索引管理器仅记录每个页面的分配和初始化。 每个页面的日志记录量大约为 250 个字节,而不是每个页面的非空部分。
- INCREMENTAL
- 使用新数据扩展索引。 此方法使用索引可用空间。 它只需要足够的排序空间来附加所插入记录的索引键。 仅当索引对象有效且在装入操作开始时可访问索引对象时,才支持此方法。 相反,它在指定了 DEFERRED 方式的装入操作之后立即无效。 如果指定了此方式,但由于索引的状态而不受支持,那么将返回警告,并且装入操作将以 REBUILD 方式继续。 同样,如果在装入构建阶段开始执行装入重新启动操作,那么不支持 INCREMENTAL 方式。
如果开启了 LogIndexBuild 数据库配置参数,那么 Db2 会生成日志记录,以用于将每个键插入到索引以及拆分的任何页面中。 未使用 HADR 时,通常会关闭 LogIndexBuild 数据库配置参数。 如果关闭此数据库配置参数,那么索引管理器记录的索引量取决于是否指定了 ALLOW READ ACCESS 选项。 如果指定了 ALLOW READ ACCESS 选项,那么将生成日志记录,包括页面分拆的日志。 如果未指定 ALLOW READ ACCESS 选项,那么不会从索引管理器生成日志记录。
- DEFERRED
- 如果指定此方式,那么 LOAD 实用程序不会尝试创建索引。 索引标记为需要刷新。 对与装入操作无关的此类索引的首次访问可能会强制重建,或者在重新启动数据库时可能会重建索引。 此方法需要足够的排序空间用于最大索引的所有关键部件。 采用此方法时,构造索引所需的总时间比 REBUILD 方式所需的时间长。 因此,当您运行具有延迟索引的多个装入操作时,建议(从性能视点)允许序列中的最后一个装入操作运行索引重建。 否则,需要在首次非装入访问时重建索引。
仅支持对具有非唯一索引的表进行延迟索引,以便在装入操作后,在装入阶段插入的重复键不会持久。
- ALLOW NO ACCESS
- 装入操作锁定目标表以在装入期间独占访问。 在装入期间,表状态设置为“正在装入”。 ALLOW NO ACCESS 是缺省行为。 它是 LOAD REPLACE 的唯一有效选项。
当表具有约束时,表状态将设置为“设置完整性暂挂”和“正在装入”。 SET INTEGRITY 语句必须用于使表脱离“设置完整性暂挂”状态。
- ALLOW READ ACCESS
- 装入操作以共享方式锁定目标表。 表状态设置为“正在装入”和“读访问权”。 在装入表时,读者可以访问数据的非增量部分。 换句话说,读者可以访问表中在装入开始前存在的数据。 在装入完成之前,正在装入的数据不可用。重要信息: 不推荐使用 LOAD 命令的 ALLOW READ ACCESS 参数,在以后的发行版中可能会将其除去。 在不再使用 LOAD 命令的 ALLOW READ ACCESS 参数之前,开始使用 INGEST 实用程序 。 另外,还可以在命令脚本中使用插入实用程序。
按列组织的 表不支持 ALLOW READ ACCESS 参数。
ALLOW READ ACCESS 装入的 LOAD TERMINATE 或 LOAD RESTART 可以使用此参数。 ALLOW NO ACCESS 装入的 LOAD TERMINATE 或 LOAD RESTART 不能使用此参数。 此外,如果目标表上的索引标记为需要重建,那么此选项无效。
当表具有约束时,表状态将设置为“设置完整性暂挂”、“正在装入”和“读访问权”。 在装入结束时,表状态“正在装入”已除去,但表状态“设置完整性暂挂”和“读访问权”仍保留。 SET INTEGRITY 语句必须用于使表脱离“设置完整性暂挂”。 当表处于“设置完整性暂挂”和“读访问权”状态时,数据的非增量部分仍可供读者访问。 在 SET INTEGRITY 语句完成之前,数据的新(增量)部分仍然不可访问。 您可以在同一个表上运行多个装入而不发出 SET INTEGRITY 语句。 但是,在发出 SET INTEGRITY 语句之前,只有原始(已选中)数据保持可见。
ALLOW READ ACCESS 还支持以下修饰符:- USE tablespace-name
- 如果正在重建索引,那么索引的影子副本将在表空间 tablespace-name 中进行构建。 在 INDEX COPY PHASE 期间,将索引复制到装入结束的原始表空间。 只有系统临时表空间才能与此选项配合使用。 如果未指定,那么将在与索引对象相同的表空间中创建影子索引。 如果在与索引对象相同的表空间中创建影子副本,那么在旧索引对象上的影子索引对象的副本是瞬时的。 如果影子副本位于索引对象的不同表空间中,那么将创建物理副本。 此复制操作可能需要大量的 I/O 和时间。 在 INDEX COPY PHASE 期间,当表处于装入结束的脱机状态时,将发生复制。
如果没有此选项,影子索引将在与原始索引相同的表空间中进行构建。 缺省情况下,原始索引和影子索引同时存在于同一表空间中。 因此,一个表空间可能没有足够的空间来同时保存这两个索引。 使用选项以确保为索引保留足够的表空间。
如果用户未指定 INDEXING MODE REBUILD 或 INDEXING MODE AUTOSELECT,那么将忽略此选项。 如果选择了 INDEXING MODE AUTOSELECT 并且装入选择以增量方式更新索引,那么也会忽略此选项。
- FETCH_PARALLELISM YES | NO
- 当此选项设置为 YES 时,装入实用程序将尝试在以下任一场景中并行访存远程数据源:
- 从游标通过使用 DATABASE 关键字声明游标的游标运行装入时。
- 使用 API sqlu_remotefetch_entry 介质项时。
仅当游标的 SELECT 语句为简单格式
"SELECT * FROM <tablename>"
时,才能并行访存数据。 如果设置为 NO,那么不会执行并行访存。 缺省值为 YES。 有关更多信息,请参阅使用 CURSOR 文件类型移动数据。 - SET INTEGRITY PENDING CASCADE
- 如果 LOAD 将表置于 "设置完整性暂挂" 状态,请使用 SET
INTEGRITY PENDING CASCADE 来指定装入的表的 "设置完整性暂挂" 状态是否立即级联到所有后代表。 后代表包括后代外键表、后代立即具体化查询表和后代立即暂存表。
- IMMEDIATE
- 指示“设置完整性暂挂”状态立即扩展到所有后代外键表、后代立即具体化查询表和后代暂存表。 对于 LOAD INSERT 操作,即使指定了 IMMEDIATE 选项,“设置完整性暂挂”状态也不会扩展到后代外键表。
稍后检查已装入表的约束违例时,置于“设置完整性暂挂读访问”状态的后代外键表将置于“设置完整性暂挂无访问”状态。 通过使用 SET INTEGRITY 语句的 IMMEDIATE CHECKED 选项来检查装入的表是否存在约束违例。
- DEFERRED
- 指示仅将装入的表置于“设置完整性暂挂”状态。 后代外键表,后代立即具体化查询表和后代立即登台表的状态保持不变。
在检查其父表的约束违例时,后代外键表稍后可能被隐式置于“设置完整性暂挂”状态。 通过使用 SET INTEGRITY 语句的 IMMEDIATE CHECKED 选项来检查约束违例。 在检查其底层表之一的完整性违例时,后代立即具体化查询表和后代立即暂存表将被隐式置于“设置完整性暂挂”状态。 如果是通过查询而不是指定的表来访问未处于“设置完整性暂挂”状态的合格具体化查询表,那么对处于“设置完整性暂挂”状态的表进行查询可能会成功。 发出警告 (SQLSTATE 01586) 以指示后代表置于“设置完整性暂挂”状态。 请参阅 SET INTEGRITY 语句的 Notes 部分,以了解何时将这些后代表置于 "设置完整性暂挂" 状态。
如果未指定 SET INTEGRITY PENDING CASCADE 选项,那么只会将装入的表置于“设置完整性暂挂”状态。 后代外键表、后代立即具体化查询表和后代立即暂存表的状态保持不变。 在检查已装入表的约束违例时,这些表稍后可以被隐式置于“设置完整性暂挂”状态。
如果 LOAD 未将目标表置于 "设置完整性暂挂" 状态,那么将忽略 SET INTEGRITY PENDING CASCADE 选项。
- LOCK WITH FORCE
- 装入数据时,实用程序将获取各种锁定,包括表锁定。 此选项允许装入以强制关闭在目标表上持有冲突锁定的其他应用程序,而不是等待并可能在获取锁定时超时。 装入实用程序不会强制关闭在系统目录表上持有冲突锁定的应用程序。 强制应用程序回滚并释放装入实用程序所需的锁定。 然后,装入实用程序可以继续。 此选项需要与 FORCE APPLICATIONS 命令(SYSADM、SYSCTRL 或 SYSMAINT)相同的权限。
ALLOW NO ACCESS 可以强制执行在装入操作开始时持有冲突锁定的应用程序。 在装入操作开始时,实用程序可以强制执行尝试查询或修改表的应用程序。
ALLOW READ ACCESS 可以强制在装入操作开始或结束时持有冲突锁定的应用程序。 在装入操作开始时,装入实用程序可以强制执行尝试修改表的应用程序。 在装入操作结束时, LOAD 实用程序可以强制正在尝试查询或修改表的应用程序。
- SOURCEUSEREXIT executable
- 指定调用以将数据馈送到实用程序的可执行文件的名称。
按列组织的 表不支持 SOURCEUSEREXIT 参数。
如果 DB2_LOAD_RESTRICTED_IO_ALLOW_SOURCEUSEREXIT 设置为 YES,并且启用了 DB2_LOAD_RESTRICTED_IO_PATH,那么无法使用 SOURCEUSERXIT。
- REDIRECT
- INPUT FROM
- BUFFER input-buffer
- input-buffer 中指定的字节流将传递到正在运行可执行文件的进程的 STDIN 文件描述符中。
- FILE input-file
- 此客户机端文件的内容将传递到正在运行可执行文件的进程的 STDIN 文件描述符中。
- OUTPUT TO
- FILE output-file
- 将 STDOUT 和 STDERR 文件描述符捕获到指定的标准服务器端文件。
- PARALLELIZE
- 通过同时使用多个用户出口进程来增加进入装入实用程序的数据的吞吐量。 此选项仅在多分区数据库环境中适用,并且在单分区数据库环境中被忽略。
- PARTITIONED DB CONFIG partitioned-db-option
- 使用此选项来装入跨多个数据库分区分发的表。 您可以指定专用于分区数据库的配置选项。 partitioned-db-option 值可以是下列任何选项:
分区数据库环境的装入配置选项中提供了这些选项的详细描述。PART_FILE_LOCATION x OUTPUT_DBPARTNUMS x PARTITIONING_DBPARTNUMS x MODE x MAX_NUM_PART_AGENTS x ISOLATE_PART_ERRS x STATUS_INTERVAL x PORT_RANGE x CHECK_TRUNCATION MAP_FILE_INPUT x MAP_FILE_OUTPUT x TRACE x NEWLINE DISTFILE x OMIT_HEADER RUN_STAT_DBPARTNUM x
- RESTARTCOUNT
- 不推荐。
- USING directory
- 不推荐。
示例 1
- COL1 VARCHAR 20 NOT NULL WITH DEFAULT
- COL2 SMALLINT
- COL3 CHAR 4
- COL4 CHAR 2 NOT NULL WITH DEFAULT
- COL5 CHAR 2 NOT NULL
- ELE1 位于 01 - 20
- ELE2 位于 21 - 22
- ELE3 位于 23 - 23
- ELE4 位于 24 - 27
- ELE5 位于 28 - 31
- ELE6 位于 32 - 32
- ELE7 位于 33 - 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)
- MODIFIED BY 参数中的 striptblanks 规范强制截断 VARCHAR 列 (例如,行 1 , 2 和 3 中的COL1,长度为 11,17 和 19 个字节) 中的空白。
- MODIFIED BY 参数中指定的 reclen=40 指示每个输入记录不以换行符结尾,并且每个记录的长度为 40 个字节。 最后 8 个字节不用于装入表。
- 由于在输入文件中未提供 COL4,因此它将使用其缺省值插入到 TABLE1 中(它被定义为 NOT NULL WITH DEFAULT)。
- 位置 23 和 32 用于指示是否针对特定行使用 NULL 装入了 TABLE1 的 COL2 和 COL3。 如果特定记录的列的空指示符位置包含
Y
,那么此列为 NULL。 如果列的空指示符包含N
,那么输入记录的列数据位置中的数据值(以 L(........) 定义)将用作行的列数据的源。 在此示例中,第 1 行中的任何一列都不是 NULL;第 2 行中的 COL2 是 NULL;第 3 行中的 COL3 是 NULL。 - 在此示例中,将 COL1 和 COL5 的 NULL INDICATORS 指定为 0(零),表示数据不可为空。
- 特定列的 NULL INDICATOR 可以在输入记录中的任意位置,但必须指定位置,并且必须提供
Y
或N
值。
示例 2(从文件装入 LOB)
- COL1 CHAR 4 NOT NULL WITH DEFAULT
- LOB1 LOB
- LOB2 LOB
- ELE1 位于 01 - 04
- ELE2 位于 06 - 13
- ELE3 位于 15 - 22
- ASCFILE2 具有 LOB 数据。
- ASCFILE3 具有 LOB 数据。
- ASCFILE4 具有 LOB 数据。
- ASCFILE5 具有 LOB 数据。
- ASCFILE6 具有 LOB 数据。
- ASCFILE7 具有 LOB 数据。
1...5....10...15...20...25...30.
REC1 ASCFILE2 ASCFILE3
REC2 ASCFILE4 ASCFILE5
REC3 ASCFILE6 ASCFILE7
db2 load from ascfile1 of asc
lobs from /u/user1, /u/user1/bin
modified by lobsinfile reclen=22
method L (1 4, 6 13, 15 22)
insert into table1
- MODIFIED BY 参数中 lobsinfile 的规范告知装入程序要从文件装入所有 LOB 数据。
- MODIFIED BY 参数中指定的 reclen=22 指示每个输入记录不以换行符结尾,并且每个记录的长度为 22 个字节。
- LOB 数据包含在六个文件中,即 ASCFILE2 到 ASCFILE7。 每个文件包含用于为特定行装入 LOB 列的数据。 LOB 与其他数据之间的关系在 ASCFILE1 中指定。 此文件的第一个记录告知装入器将 REC1 放在第 1 行的 COL1 中。 ASCFILE2 的内容用于装入第 1 行的 LOB1,ASCFILE3 的内容用于装入第 1 行的 LOB2。 同样,ASCFILE4 和 ASCFILE5 用于装入第 2 行的 LOB1 和 LOB2,而 ASCFILE6 和 ASCFILE7 用于装入第 3 行的 LOB。
- 当装入器需要这些文件时,LOBS FROM 参数包含搜索命名 LOB 文件的两个路径。
- 要直接从 ASCFILE1 装入 LOB(非定界 ASCII 文件),不使用 lobsinfile 修饰符,必须遵守以下规则:
- 任何记录(包括 LOB)的总长度不能超过 32 KB。
- 输入记录中的 LOB 字段必须是固定长度,并且在需要时使用空格填充 LOB 数据。
- 必须指定 striptblanks 修饰符,以便可以将用于填充 LOB 的尾部空格像把 LOB 插入到数据库中一样移除。
示例 3(使用转储文件)
table friends "( c1 INT NOT NULL, c2 INT, c3 CHAR(8) )"
23, 24, bobby
, 45, john
4,, mary
但是,第二行被拒绝,因为第一个 INT 是 NULL,而列定义指定 NOT NULL。 包含与 DEL 格式不一致的初始字符的列会生成错误,并且记录被拒绝。 您可以将此类记录写入转储文件。
sam,并在警告中标记字符
sdf。 不会拒绝该记录。
22,34,"bob"
24,55,"sam" sdf
22,34,"bob"
,并生成一条警告,指出忽略了 22
后面的列中的某些数据。 不会拒绝该记录。22 3, 34,"bob"
示例 4(装入带有标识列的表)
- C1 VARCHAR(30)
- C2 INT GENERATED BY DEFAULT AS IDENTITY
- C3 DECIMAL(7,2)
- C4 CHAR(1)
TABLE2 与 TABLE1 相同,但 C2 是 GENERATED ALWAYS 标识列。
"Liszt"
"Hummel",,187.43, H
"Grieg",100, 66.34, G
"Satie",101, 818.23, I
"Liszt", 74.49, A
"Hummel", 0.01, H
"Grieg", 66.34, G
"Satie", 818.23, I
- 由于在 DATAFILE1 中没有为第 1 行和第 2 行提供标识值,因此以下命令将为这两行生成标识值。 但是,为行 3 分配了用户提供的身份值 100 ,为行 4 分配了用户提供的身份值 101。
db2 load from datafile1.del of del replace into table1
- 要将 DATAFILE1 装入到 TABLE1 中,以便为所有行生成标识值,请发出下列其中一个命令:
db2 load from datafile1.del of del method P(1, 3, 4) replace into table1 (c1, c3, c4) db2 load from datafile1.del of del modified by identityignore replace into table1
- 要将 DATAFILE2 装入到 TABLE1 中,以便为每一行生成标识值,请发出下列其中一个命令:
db2 load from datafile2.del of del replace into table1 (c1, c3, c4) db2 load from datafile2.del of del modified by identitymissing replace into table1
- 要将 DATAFILE1 装入到 TABLE2 中以便对第 3 行和第 4 行指定标识值 100 和 101,请发出以下命令:
db2 load from datafile1.del of del modified by identityoverride replace into table2
在这种情况下,将拒绝第 1 行和第 2 行,因为指定了装入选项来覆盖系统生成的标识值以支持用户提供的值。 但是,如果用户提供的值不存在,那么必须拒绝该行,因为标识列隐式地不为 NULL。
- 如果 DATAFILE1 装入 TABLE2,而不使用任何与标识相关的文件类型修饰符,那么将装入第 1 行和第 2 行。 但是,第 3 行和第 4 行被拒绝,因为它们提供了自己的非 NULL 值,而标识列是 GENERATED ALWAYS。
示例 5(装入具有行更改时间戳记列的表)
TABLE1 有四列:
- C1 VARCHAR(30)
- C2 ROW CHANGE TIMESTAMP GENERATED BY DEFAULT
- C3 DECIMAL(7,2)
- C4 CHAR(1)
TABLE2 与 TABLE1 相同,但 C2 是 GENERATED ALWAYS 列。
以下数据记录位于 DATAFILE1(DEL 格式):
"Liszt"
"Hummel",,187.43, H
"Grieg", 2006-05-23-15.55.53.209971, 66.34, G
"Satie", 2006-05-22-19.34.14.947681, 818.23, I
以下数据记录位于 DATAFILE2(DEL 格式):
"Liszt", 74.49, A
"Hummel", 0.01, H
"Grieg", 66.34, G
"Satie", 818.23, I
- 以下命令为第 1 行和第 2 行生成 ROW CHANGE TIMESTAMP 值,因为在 DATAFILE1 中没有为这些行提供 ROW CHANGE TIMESTAMP 值。 但是,为第 3 行和第 4 行分配了用户提供的
2006-05-23-15.55.53.209971
和2006-05-22-19.34.14.947681
的 ROW CHANGE TIMESTAMP 值。db2 load from datafile1.del of del replace into table1
- 要将 DATAFILE1 装入 TABLE1,以便为所有行生成 ROW CHANGE TIMESTAMP 值,请发出下列其中一个命令:
db2 load from datafile1.del of del method P(1, 3, 4) replace into table1 (c1, c3, c4) db2 load from datafile1.del of del modified by rowchangetimestampignore replace into table1
- 要将 DATAFILE2 装入 TABLE1,以便为每行生成 ROW CHANGE TIMESTAMP 值,请发出下列其中一个命令:
db2 load from datafile2.del of del replace into table1 (c1, c3, c4) db2 load from datafile2.del of del modified by rowchangetimestampmissing replace into table1
- 要将 DATAFILE1 装入 TABLE2,以便将
2006-05-23-15.55.53.209971
和2006-05-22-19.34.14.947681
的 ROW CHANGE TIMESTAMP 值分配给第 3 行和第 4 行,请发出以下命令:db2 load from datafile1.del of del modified by rowchangetimestampoverride replace into table2
在此情况下,将拒绝第 1 行和第 2 行,因为已指示该实用程序来覆盖系统生成的 ROW CHANGE TIMESTAMP 值以支持用户提供的值。 但是,如果用户提供的值不存在,那么必须拒绝该行,因为行更改时间戳记列隐式地不为 NULL。
- 如果 DATAFILE1 装入 TABLE2,而不使用任何与 ROW CHANGE 相关的文件类型修饰符,那么将装入第 1 行和第 2 行。 但是,第 3 行和第 4 行被拒绝,因为它们提供了自己的非 NULL 值,而行更改时间戳记列是 GENERATED ALWAYS。
示例 6(使用 CURSOR 文件类型装入表)
ABC.TABLE1
有三列:ONE INT
TWO CHAR(10)
THREE DATE
ABC.TABLE2
有三列:ONE VARCHAR
TWO INT
THREE DATE
ABC.TABLE1
中的所有数据装入 ABC.TABLE2
:db2 declare mycurs cursor for select two,one,three from abc.table1
db2 load from mycurs of cursor insert into abc.table2
ABC.TABLE1
存在于与数据库 ABC.TABLE2
所在的不同数据库中,那么可以使用 DECLARE CURSOR 语句的 DATABASE
、USER
和 USING 选项来运行装入。 例如,如果 ABC.TABLE1
存在于数据库 DB1
中,且 DB1
的用户标识和密码是 user1
和 pwd1
,那么运行以下命令可以将 ABC.TABLE1
中的所有数据装入 ABC.TABLE2
:db2 declare mycurs cursor database DB1 user user1 using pwd1
for select two,one,three from abc.table1
db2 load from mycurs of cursor insert into abc.table2
示例 - 装入 XML 数据
用户使用 XDS 字段创建了数据文件来描述要插入到表中的文档。 它可能显示为如下所示:
1, "<XDS FIL=""file1.xml"" />"
2, "<XDS FIL='file2.xml' OFF='23' LEN='45' />"
对于第一行,XML 文档由名为 file1.xml 的文件标识。 由于字符定界符是双引号,且 XDS 中存在双引号,因此 XDS 中包含的双引号将加倍。 对于第二行,XML 文档由文件名为 file2.xml 文件标识,以字节偏移 23 开始且为 45 个字节。
LOAD
FROM data.del of DEL INSERT INTO mytable
示例 - 从 CURSOR 装入 XML 数据
从游标装入数据与常规关系列类型相同。 此示例有两个表:T1 和 T2。 每个表由名为 C1 的单个 XML 列组成。 要从 T1 装入 T2,请首先声明游标:
DECLARE
X1 CURSOR FOR SELECT C1 FROM T1;
接下来,您可以使用游标类型发出 LOAD:
LOAD FROM X1 of
CURSOR INSERT INTO T2
将特定于 XML 的 LOAD 选项应用于游标类型与从文件中装入相同。
使用 XMLVALIDATE 子句的示例
- XMLVALIDATE USING XDS
用户希望根据 XDS 中指示的模式进行验证。 如果 XDS 值存在但没有 SCH 属性,那么将针对此子句中使用的模式验证这些文档。
XMLVALIDATE USING XDS DEFAULT S1.SCHEMA_B
用户希望验证,但忽略 XDS 中提到的某些模式。
XMLVALIDATE USING XDS IGNORE S1.SCHEMA_C
- 用户希望在 XDS 中验证,但重新映射某些模式。
XMLVALIDATE USING XDS MAP( (S1.SCHEMA_A, S2.SCHEMA_B ), (S3.SCHEMA_C, S5.SCHEMA_E) )
根据指定的 XDS,将针对 S2.SCHEMA_B 验证具有 SCH 属性 S1.SCHEMA_A 的任何文档。 另外,任何 SCH 属性为 S3.SCHEMA_C 的文档都将针对 S5.SCHEMA_E 进行验证。
- 用户希望使用 DEFAULT、IGNORE 和 MAP 选项的组合:
XMLVALIDATE USING XDS DEFAULT S8.SCHEMA_H IGNORE (S9.SCHEMA_I, S10.SCHEMA_J) MAP ((S1.SCHEMA_A, S2.SCHEMA_B), (S3.SCHEMA_C, S5.SCHEMA_E), (S6.SCHEMA_F, S3.SCHEMA_C), (S4.SCHEMA_D, S7.SCHEMA_G))
- 以下示例显示了包含 XDS 的 XML 列:
使用 SQL 标识为<XDS FIL='xmlfile.001.xml' />
S8.SCHEMA_H
的 XML 模式来验证文件 xmlfile.001.xml中的文档,因为已将S8.SCHEMA_H
指定为要使用的缺省模式。 - 以下示例显示了包含 XDS 的 XML 列:
不会对文件 xmlfile.002.xml中的文档进行模式验证,因为虽然 XDS 将<XDS FIL='xmlfile.002.xml' OFF='10' LEN='500' SCH='S10.SCHEMA_J' />
S10.SCHEMA_J
指定为要使用的模式,但该模式是 IGNORE 子句的一部分。 文档内容可以在文件中的字节偏移 10 处找到(也就是 第 11 个字节),并且长度为 500 个字节。 - 以下示例显示了包含 XDS 的 XML 列:
<XDS FIL='xmlfile.003.xml' SCH='S6.SCHEMA_F' />
使用 SQL 标识
S3.SCHEMA_C
的 XML 模式用于验证文件xmlfile.003.xml
中的文档。 使用此验证是因为 MAP 子句指定模式S6.SCHEMA_F
映射到模式S3.SCHEMA_C
。 不进行进一步映射。 因此,在此情况下,模式S3.SCHEMA_C
到模式S5.SCHEMA_E
的映射不适用。 - 以下示例显示了包含 XDS 的 XML 列:
<XDS FIL='xmlfile.004.xml' SCH='S11.SCHEMA_K' />
使用 SQL 标识
S11.SCHEMA_K
的 XML 模式用于验证文件 xmlfile.004.xml 中的文档。 在此情况下,不适用任何 DEFAULT、IGNORE 或 MAP 规范。
- XMLVALIDATE USING SCHEMA
- 用户希望根据单个 SCHEMA 来验证所有 XML 文档。 这些示例基于以下 XMLVALIDATE 子句:
XMLVALIDATE USING SCHEMA S2.SCHEMA_B
- 以下示例显示了包含 XDS 的 XML 列:
<XDS FIL='xmlfile.001.xml' />
通过使用具有 SQL 标识
S2.SCHEMA_B
的 XML 模式来验证文件 xmlfile.001.xml 中的文档。 - 以下示例显示了包含 XDS 的 XML 列:
<XDS FIL='xmlfile.002.xml' SCH='S1.SCHEMA_A' />
通过使用具有 SQL 标识
S2.SCHEMA_B
的 XML 模式来验证文件 xmlfile.002.xml 中的文档。 忽略 SCH 属性,因为验证是使用 USING SCHEMA 子句中指定的模式完成的。
- 以下示例显示了包含 XDS 的 XML 列:
- XMLVALIDATE USING SCHEMALOCATION HINTS
用户希望对照位于文档本身中的模式信息进行验证。 这些示例基于以下 XMLVALIDATE 子句:
XMLVALIDATE USING SCHEMALOCATION HINTS
- 以下示例显示了包含 XDS 的 XML 列:
使用的 XML 模式由文档内容中的 schemaLocation 属性确定,如果不存在,那么不会进行验证。<XDS FIL='xmlfile.001.xml' />
- 以下示例显示了包含 XDS 的 XML 列:
使用的 XML 模式由文档内容中的 schemaLocation 属性确定,如果不存在,那么不会进行验证。 忽略 SCH 属性,因为验证是使用 SCHEMALOCATION HINTS 完成的。<XDS FIL='xmlfile.002.xml' SCH='S1.SCHEMA_A' />
使用说明
- 数据将按输入文件中的顺序装入。 如果首选特定顺序,请在尝试装入前对数据进行排序。 如果不需要保留源数据顺序,那么可以使用 ANYORDER 文件类型修饰符,如以下
装入实用程序的文件类型修饰符
节中所述。 - 装入实用程序根据现有定义构建索引。 异常表用于处理唯一键上的重复项。 实用程序不会强制执行引用完整性、检查约束或更新依赖于属于装入操作的表的具体化查询表。 包含引用或检查约束的表置于“设置完整性暂挂”状态。 使用 REFRESH IMMEDIATE 定义的且依赖于属于装入操作的表的摘要表也将置于“设置完整性暂挂”状态。 发出 SET INTEGRITY 语句以将表脱离“设置完整性暂挂”状态。 无法对复制的具体化查询表执行装入操作。
- 如果表上存在集群索引,请在装入前对集群索引上的数据进行排序。 但是,在将数据装入多维集群 (MDC) 表之前,不需要对数据进行排序。
- 如果将数据装入受保护表时指定异常表,那么所有受无效安全标号保护的行都将发送到该表。 此操作可能允许有权访问异常表的用户访问那些他们没有权限访问的数据。 请遵循以下准则以提高安全性:
- 请小心授予异常表访问权。
- 修复后立即删除每一行,并将其复制到要装入的表中。
- 当您完成异常表时,请立即删除它。
- 内部格式的安全标号可能包含换行符。 如果使用 DEL 文件格式装入文件,那么这些换行符可能会被错误用于定界符。 如果存在此问题,请通过在 LOAD 命令中指定 delprioritychar 文件类型修饰符,对定界符使用较旧的缺省优先级。
- 要运行带有 CURSOR 文件类型的 LOAD,其中在 DECLARE CURSOR 语句期间指定了 DATABASE 关键字,那么将使用相同的凭证进行以下认证:
- 用于针对装入操作的当前连接的数据库进行认证的用户标识和密码。
- 用于针对源数据库进行认证的用户标识和密码,在 DECLARE CURSOR 语句的 DATABASE 选项中指定。
如果没有为与装入数据库的连接指定用户标识或密码,那么必须在 DECLARE CURSOR 语句期间指定源数据库的用户标识和密码。
- 支持将其各个部件从 Windows 系统复制到 AIX® 系统的多部分 PC/IXF 文件装入。 必须在 LOAD 命令中指定所有文件的名称。 例如,
LOAD FROM DATA.IXF, DATA.002 OF IXF INSERT INTO TABLE1
。 不支持从逻辑分割的 PC/IXF 文件装入到 Windows 操作系统。 - 重新启动失败的 LOAD 时,此行为将遵循现有行为,即,BUILD 阶段将强制对索引使用 REBUILD 方式。
- 当使用 COPY YES 选项时,装入实用程序可能会生成映像文件的大型副本。 当 LOAD 命令为装入的每个 LOB/LF 列值的副本映像写入数据的整个缓冲区时,需要执行此行为。 缓冲区是一个内部对象,它的大小由几个内部和外部因素决定。 通常,缓冲区大小在 68 KB 到几百 KB 之间。
- 不支持在数据库之间装入 XML 文档,并返回错误消息 SQL1407N。
- LOAD 实用程序不支持装入含有引用受防护过程的列的表中。 如果在此类表上发出 LOAD 命令,那么返回错误消息 (SQL1376N)。 要解决此限制,可以重新定义要取消防护的例程或使用导入实用程序。
- 如果表包含生成的列表达式(其中用户定义函数是编译的复合 SQL),那么只能将 LOAD 实用程序与
generatedoverride
文件类型修饰符配合使用,以将数据插入到表中。 您还可以使用导入实用程序将数据插入这些表中。 - 如果数据库表包含隐式隐藏列,那么必须指定是否在装入操作中包含隐藏列的数据。
- IMPORT 实用程序与表中的列数和数据文件中的字段数不匹配。 实用程序会检查数据文件中是否有足够的数据。 如果数据文件中的行不包含足够的数据列,那么将执行以下任一操作:
- 如果没有数据的对应表列定义为 NOT NULL,那么将拒绝该行,并发出警告消息。
- 如果相应的表列定义为 NULL,那么将成功插入行,而不显示警告消息。
相反,如果行包含的列数高于需要的列数,那么将处理足够数量的列,而忽略其余数据列。 发生此场景时,不会给出任何警告消息。
- STATISTICS 选项仅适用于 LOAD REPLACE 选项,而不适用于其他 LOAD 命令选项。
- 当 LOAD 实用程序与 COPY YES 选项一起使用,并且该表包含 LOB 列时,LOAD 始终强制执行 COMPACT 行为,即使在使用 NOT COMPACT 定义 LOB 列时也是如此。
LOAD TERMINATE 和 LOAD RESTART 字典管理的摘要
以下图表汇总了 TERMINATE 伪指令下 LOAD 处理的压缩字典管理行为。
表 COMPRESS 属性 | LOAD 之前是否存在表行 Data Dictionary? | LOAD1 之前存在 XML 存储对象字典 | TERMINATE:LOAD REPLACE KEEPDICTIONARY 或 LOAD INSERT | TERMINATE:LOAD REPLACE RESETDICTIONARY |
---|---|---|---|---|
YES | YES | YES | 保留现有字典。 | 未保留任何字典。 2 |
YES | YES | 否 | 保留现有字典。 | 都不保留。 2 |
YES | 否 | YES | 保留现有字典。 | 都不保留。 |
YES | 否 | 否 | 都不保留。 | 都不保留。 |
否 | YES | YES | 保留现有字典。 | 都不保留。 |
否 | YES | 否 | 保留现有字典。 | 都不保留。 |
否 | 否 | YES | 保留现有字典。 | 都不保留。 |
否 | 否 | 否 | 不执行任何操作。 | 不执行任何操作。 |
- 仅当满足以下任一条件时,才能为表的 XML 存储对象创建压缩字典:
- XML 列将添加到 Db2 V 9.7 或更高版本中的表。
- 通过使用联机表移动来迁移表。
- 在表已启用数据捕获的特殊情况下,将保留表行 Data Dictionary。
LOAD RESTART 将表截断为达到最后一个一致性点。 作为 LOAD RESTART 处理的一部分,如果压缩字典在执行最后一个 LOAD 一致性点时存在于表中,那么表中存在压缩字典。 在这种情况下,LOAD RESTART 不会创建新字典。 关于可能条件的摘要,请参阅表 4。
表 COMPRESS 属性 | 表行 Data Dictionary 存在于 LOAD 一致性 point?1 之前 | XML 存储对象字典存在于最后 LOAD?2 之前 | RESTART:LOAD REPLACE KEEPDICTIONARY 或 LOAD INSERT | RESTART:LOAD REPLACE RESETDICTIONARY |
---|---|---|---|---|
YES | YES | YES | 保留现有字典。 | 保留现有字典。 |
YES | YES | 否 | 保留现有表行 Data Dictionary 并构建基于 ADC 的 XML 字典。 | 保留现有表行 Data Dictionary 并构建 XML 字典。 |
YES | 否 | YES | 根据 ADC 构建表行 Data Dictionary。 保留现有 XML 字典。 | 构建表行 Data Dictionary。 保留现有 XML 字典。 |
YES | 否 | 否 | 根据 ADC 构建表行数据和 XML 字典。 | 构建表行数据和 XML 字典。 |
否 | YES | YES | 保留现有字典。 | 移除现有字典。 |
否 | YES | 否 | 保留现有表行 Data Dictionary。 | 移除现有表行 Data Dictionary。 |
否 | 否 | YES | 保留现有 XML 字典。 | 移除现有 XML 字典。 |
否 | 否 | 否 | 不执行任何操作。 | 不执行任何操作。 |
- 装入 XML 数据和在从操作开始的装入阶段重新启动期间失败的装入操作时,不允许使用 SAVECOUNT 选项。
- 仅当满足以下任一条件时,才能为表的 XML 存储对象创建压缩字典:
- XML 列将添加到 Db2 V 9.7 或更高版本中的表。
- 通过使用联机表移动来迁移表。
装入实用程序的文件类型修饰符
修饰符 | 描述 |
---|---|
anyorder | 此修饰符指定不需要保留源数据顺序。 在 SMP 系统上使用此修饰符可获得显著的性能优势。 将此修饰符与 cpu_parallelism 参数配合使用。 如果 cpu_parallelism 参数的值为 1,那么将忽略此修饰符。 如果 SAVECOUNT 参数的值大于 0,那么此修饰符不受支持,因为一致性点之后的崩溃恢复需要按顺序装入数据。 对于 按列组织的 表,多维集群 (MDC) 表和范围分区表的所有装入操作,将隐式打开此修饰符。 |
cdeanalyzefrequency=x | x 是 0 - 99 之间的整数(含 0 和 99)。 此值控制在 ANALYZE 阶段对多少数据进行采样以生成压缩字典。 在大规模并行处理 (MPP) 中,采样大小不会跨成员聚集。 当第一个成员达到最大值时,ANALYZE 阶段将停止。 |
generatedignore | 此修饰符通知装入实用程序忽略所有生成列的数据,即使它存在于数据文件中也是如此。 此指令会产生由实用程序生成的所有列值,包括生成的列值。 此修饰符不能与 generatedmissing 或 generatedoverride 修饰符一起使用。 |
generatedmissing | 如果指定了此修饰符,那么实用程序假定输入数据文件不包含生成的列(甚至不是 NULL)的数据。 此指令会产生由实用程序生成的所有列值,包括生成的列值。 此修饰符不能与 generatedignore 或 generatedoverride 修饰符一起使用。 |
generatedoverride | 此修饰符指示装入实用程序接受用户提供的表中所有生成列的数据(与这些类型的列的正常规则相反)。 从另一数据库系统迁移数据时,或者从使用 ROLLFORWARD
DATABASE 命令上的 RECOVER DROPPED TABLE 选项恢复的数据装入表时,此修饰符很有用。 使用此修饰符时,将拒绝非可空生成列的没有数据或 NULL 数据的任何行 (SQL3116W)。 使用此修饰符时,表将置于“设置完整性暂挂”状态。 要使表脱离“设置完整性暂挂”状态而不验证用户提供的值,请在装入操作后发出以下命令: 要使表脱离“设置完整性暂挂”状态并强制验证用户提供的值,请在装入操作后发出以下命令:
当指定此修饰符并在任何分区键、维度键或分发键中存在生成的列时,LOAD 命令会自动将修饰符转换为 generatedignore。 然后,LOAD 命令将继续执行装入操作。 净效应是重新生成所有生成的列值。 此修饰符不能与 generatedmissing 或 generatedignore 修饰符一起使用。 此修饰符不能用于 按列组织的 表 (SQLSTATE 42858)。 使用随机生成方法的随机分布表具有名为 RANDOM_DISTRIBUTION_KEY 的内部生成列。 此修饰符不适用于该列,仅适用于表中的其他生成列。 始终重新生成 RANDOM_DISTRIBUTION_KEY 的值。 |
identityignore | 此修饰符通知装入实用程序忽略标识列的数据,即使它存在于数据文件中也是如此。 结果是所有标识值都由实用程序生成。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 标识列,行为都相同。 对于 GENERATED ALWAYS 列,没有任何行被拒绝。 此修饰符不能与 identitymissing 或 identityoverride 修饰符一起使用。 |
identitymissing | 如果指定了此修饰符,那么实用程序假定输入数据文件不包含标识列(甚至不是 Null)的数据。 因此,它为每行生成一个值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 标识列,行为都相同。 此修饰符不能与 identityignore 或 identityoverride 修饰符一起使用。 |
identityoverride | 仅当定义为 GENERATED ALWAYS 的标识列存在于要装入的表中时才使用此修饰符。 它指示实用程序接受此类列的显式,非 NULL 数据(与这些类型的标识列的正常规则相反)。 此修饰符在以下场景中非常有用:
使用此修饰符时,将拒绝标识列的没有数据或 NULL 数据的任何行 (SQL3116W)。 此修饰符不能与 identitymissing 或 identityignore 修饰符一起使用。 当使用此选项时,装入实用程序不会尝试维护或验证表的标识列中值的唯一性。 |
implicitlyhiddeninclude | 如果指定了此修饰符,那么实用程序假定输入数据文件包含隐式隐藏列的数据,并且还将装入此数据。 此修饰符不能与 implicitlyhiddenmissing 修饰符一起使用。 有关指定多个修饰符时的优先顺序的更多信息,请参阅 Notes。 使用随机生成方法的随机分布表将隐藏列作为其称为 RANDOM_DISTRIBUTION_KEY 的分布列。 此修饰符不适用于该列,仅适用于表中的其他隐藏列。 RANDOM_DISTRIBUTION_KEY 被视为缺失的。 |
implicitlyhiddenmissing | 如果指定了此修饰符,那么实用程序假定输入数据文件不包含隐式隐藏列的数据,并且实用程序将为这些隐藏列生成值。 此修饰符不能与 implicitlyhiddeninclude 修饰符一起使用。 有关指定多个修饰符时的优先顺序的更多信息,请参阅 Notes。 |
indexfreespace=x | x 是 0 和 99 之间的整数(含 0 和 99)。 该值被解释为当装入重建索引时,将保留为可用空间的每个索引页的百分比。 带有 INDEXING MODE INCREMENTAL 的装入将忽略此选项。 将不加限制地添加页面中的第一个条目;添加后续条目以维护百分比可用空间阈值。 缺省值是在 CREATE INDEX 时使用的值。 此值优先于在 CREATE INDEX 语句中指定的 PCTFREE 值。 indexfreespace 选项仅影响索引叶页面。 |
lobsinfile | lob-path 指定包含 LOB 数据的文件的路径。 ASC、DEL 或 IXF 装入输入文件包含 LOB 列中具有 LOB 数据的文件的名称。 当与 CURSOR 文件类型一起指定时,此选项不受支持。 LOBS FROM 子句指定使用 lobsinfile 修饰符时 LOB 文件所在的位置。 LOBS FROM 子句会隐式激活 lobsinfile 行为。 LOBS FROM 子句将用于在装入数据时搜索 LOB 文件的路径列表传达给 LOAD 实用程序。 每个路径包含至少一个文件,该文件包含数据文件中的 Lob 位置说明符 (LLS) 指向的至少一个 LOB。 LLS 是存储在 LOB 文件路径中的文件中 LOB 位置的字符串表示。 LLS 的格式为 filename.ext.nnn.mmm/,其中:
例如,如果字符串 db2exp.001.123.456/ 存储在数据文件中,那么 LOB 位于文件 db2exp.001 中的偏移 123 处,长度为 456 个字节。 要指示空 LOB,请输入大小为 -1。 如果将大小指定为 0,那么它被视为长度为 0 的 LOB。 对于长度为 -1 的空 LOBS,将忽略偏移量和文件名。 例如,空 LOB 的 LLS 可能是 db2exp.001.7.-1/。 |
maxanalyzesize=x | X 是值为 <Number><Megabytes|Gigabytes>的大小。 缺省大小为 128 GB。 maxanalyzesize 控制在 ANALYZE 阶段对多少数据进行采样以生成压缩字典。 在大规模并行处理 (MPP) 中,采样大小不会跨成员聚集。 当第一个成员达到最大值时,ANALYZE 阶段会停止。 注: 值 0 表示无限制 (完整大小)。 例如:
|
noheader | 跳过标题验证代码(仅适用于将操作装入到单一分区数据库分区组中存在的表中)。 如果对单一分区数据库分区组中的表使用缺省 MPP 装入(方式 PARTITION_AND_LOAD),那么文件不具有头。 因此,不需要 noheader 修饰符。 如果使用 LOAD_ONLY 方式,那么文件应该具有头。 仅当您想要使用没有头的文件运行 LOAD_ONLY 操作时,才需要使用 noheader 修饰符。 |
norowwarnings | 禁止有关被拒绝行的所有警告。 |
pagefreespace=x | x 是 0 和 100 之间的整数(含 0 和 100)。 该值被解释为留作可用空间的每个数据页的百分比。 如果指定的值因为最小行大小而无效,那么该行将置于新页上。 无效值的示例是长度至少为 3000 个字节的行,x 值为 50。 如果指定了值 100,那么每行都放置在新页上。 表的 PCTFREE 值确定每页指定的可用空间量。 如果未设置装入操作上的 pagefreespace 值或表上的 PCTFREE 值,那么该实用程序将在每个页面上填满尽可能多的空间。 pagefreespace 设置的值将覆盖为表指定的 PCTFREE 值。 |
periodignore | 此修饰符通知装入实用程序忽略时间段列的数据,即使它存在于数据文件中也是如此。 当指定此修饰符时,所有周期列值都由实用程序生成。 此修饰符不能与 periodmissing 修饰符或 periodoverride 修饰符一起使用。 |
periodmissing | 如果指定了此修饰符,那么实用程序假定输入数据文件不包含周期列的数据。 当指定此修饰符时,所有周期列值都由实用程序生成。 此修饰符不能与 periodignore 修饰符或 periodoverride 修饰符一起使用。 |
periodoverride | 此修饰符指示装入实用程序接受系统周期临时表中 GENERATED ALWAYS AS ROW BEGIN 和 GENERATED ALWAYS AS ROW END 列的用户提供的数据。 此行为与这些类型列的正常规则相反。 当您要维护历史记录数据并将包含时间戳记的数据装入系统周期临时表时,修饰符可能很有用。 使用此修饰符时,将拒绝 ROW BEGIN 或 ROW END 列中没有数据或 NULL 数据的任何行。 |
rowchangetimestampignore | 此修饰符通知装入实用程序忽略行更改时间戳记列的数据,即使它存在于数据文件中也是如此。 结果是所有 ROW CHANGE TIMESTAMP 都由该实用程序生成。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 列,行为都相同。 对于 GENERATED ALWAYS 列,没有任何行被拒绝。 此修饰符不能与 rowchangetimestampmissing 或 rowchangetimestampoverride 修饰符一起使用。 |
rowchangetimestampmissing | 如果指定了此修饰符,那么实用程序假定输入数据文件不包含行更改时间戳记列(甚至不是 NULL)的数据。 因此,为每行生成一个值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 列,行为都相同。 此修饰符不能与 rowchangetimestampignore 或 rowchangetimestampoverride 修饰符一起使用。 |
rowchangetimestampoverride | 仅当定义为 GENERATED ALWAYS 的行更改时间戳记列存在于要装入的表中时才使用此修饰符。 它指示实用程序接受此类列的显式、非 NULL 数据(与这些类型的行更改时间戳记列的正常规则相反)。 此修饰符在以下场景中非常有用:
使用此修饰符时,将拒绝 ROW CHANGE TIMESTAMP 列的没有数据或 NULL 数据的任何行 (SQL3116W)。 此修饰符不能与 rowchangetimestampmissing 或 rowchangetimestampignore 修饰符一起使用。 当使用此选项时,装入实用程序不会尝试维护或验证表的行更改时间戳记列中值的唯一性。 |
seclabelchar | 指示输入源文件中的安全标号是安全标号值的字符串格式,而不是缺省编码数字格式。 LOAD 将每个安全标号转换为装入的内部格式。 如果字符串的格式不正确,那么不会装入行并返回警告(SQLSTATE 01H53、SQLCODE SQL3242W)。 如果该字符串不代表属于保护表的安全策略的有效安全标号,那么不会装入行并返回警告(SQLSTATE 01H53、SQLCODE SQL3243W)。 当指定 seclabelname 修饰符时,不能指定此修饰符。 否则,装入失败,返回错误 (SQLCODE SQL3525N)。 如果您的表由单个
DB2SECURITYLABEL 列组成,那么数据文件可能如下所示:
要装入或导入此数据,必须使用 seclabelchar 文件类型修饰符:
|
seclabelname | 指示输入源文件中的安全标号由其名称而不是缺省编码数字格式指示。 LOAD 将该名称转换为相应的安全标号,如果它存在。 如果对保护表的安全策略的指定名称不存在安全标号,那么不会装入行并返回警告(SQLSTATE 01H53、SQLCODE SQL3244W)。 当指定 seclabelchar 修饰符时,不能指定此修饰符。 否则,装入失败,返回错误 (SQLCODE SQL3525N)。 如果您的表由单个
DB2SECURITYLABEL 列组成,那么数据文件可能包含以下样本安全标号名称:
要装入或导入此数据,必须使用 seclabelname 文件类型修饰符:
注: 如果文件类型为 ASC ,那么安全标号名称后面的任何空格都将解释为名称的一部分。 要避免此问题,请使用 striptblanks 文件类型修饰符以确保移除空格。
|
totalfreespace=x | x 是大于或等于 0 的整数。 该值被解释为表中要追加到表末尾作为可用空间的总页数的百分比。 例如,如果 x 是 20,并且装入数据后表有 100 个数据页面,那么追加 20 个额外的空页面。 表的数据页面总数为 120。 数据页面总数不影响表中的索引页面数。 此选项不会影响索引对象。 如果使用指定的此选项完成了两个装入,那么第二个装入不会复用第一个装入附加到末尾的额外空间。 |
transactionidignore | 此修饰符通知装入实用程序忽略 TRANSACTION START ID 列的数据,即使它存在于数据文件中也是如此。 当指定此修饰符时,TRANSACTION START ID 列的值由实用程序生成。 此修饰符不能与 transactionidmissing 修饰符或 transactionidoverride 修饰符一起使用。 |
transactionidmissing | 如果指定了此修饰符,那么实用程序假定输入数据文件不包含 TRANSACTION START ID 列的数据。 当指定此修饰符时,TRANSACTION START ID 列的值由实用程序生成。 此修饰符不能与 transactionidignore 修饰符或 transactionidoverride 修饰符一起使用。 |
transactionidoverride | 此修饰符指示装入实用程序接受系统周期临时表中 GENERATED ALWAYS AS TRANSACTION START ID 列的用户提供的数据。 此行为与此类列的正常规则相反。 使用此修饰符时,将拒绝 TRANSACTION START 标识列中没有数据或 NULL 数据的任何行。 |
usedefaults | 如果已指定目标表列的源列,但它不包含一个或多个行实例的数据,那么将装入缺省值。 缺少数据的示例是:
|
修饰符 | 描述 |
---|---|
codepage=x | x 是 ASCII 字符串。 此值解释为输入数据集中数据的代码页。 在装入操作期间,将字符数据(和字符中指定的数字数据)从此代码页转换为数据库代码页。 下列规则适用:
当与 CURSOR 文件类型一起指定时,此选项不受支持。 |
dateformat="x" | x 是源 file.1 中日期的格式 以下日期元素有效:
对于每个未指定的元素,将会指定缺省值 1。 以下示例是日期格式:
|
dumpfile = x | x 是被拒绝行写入的异常文件的标准名称(根据服务器数据库分区)。 对于每个记录,最多写入 32 KB 数据。 以下部分是显示如何指定转储文件的示例:
该文件由实例所有者创建并拥有。 要覆盖缺省文件许可权,请使用 dumpfileaccessall 文件类型修饰符。 注:
|
dumpfileaccessall | 创建转储文件时,将读访问权授予“OTHERS”。 此文件类型修饰符仅在以下情况下有效:
指定的文件已存在时,不会更改其许可权。 |
fastparse | 减少对用户提供的列值的语法检查,并提高性能。 保证表在体系结构上正确(该实用程序执行足够的数据检查以防止分段违例或陷阱),但是,不会验证数据的一致性。 除非确定所有的输入数据都有效,否则请勿使用 fastparse 选项。 如果使用 fastparse 选项提交了无效数据(例如,格式不正确的时间戳记为 1>0-00-20-07.11.12.000000),那么某些 SQL 操作可以将无效数据传播到数据库的其他部分而不进行检测。 稍后检测到无效数据时,可能难以跟踪其源或数据复制到的其他位置。 |
implieddecimal | 隐式小数点的位置由列定义确定;不再假定其位于值末尾。 例如,12345 装入到 DECIMAL(8,2) 列作为 123.45 ,不是 12345.00 。此修饰符不能与 packeddecimal 修饰符一起使用。 |
timeformat="x" | x 是源 file.1 中的时间格式 有效时间元素为:
对于每个未指定的元素,将会指定缺省值 0。 时间格式的一些示例是:
|
timestampformat="x" | x 是源 file.1 中时间戳记的格式 以下列表包含有效的时间戳记元素:
|
timestampformat="x"(续) | 对于未指定的 YYYY、M、MM、D、DD 或 DDD 元素,将会指定缺省值 1。 对于未指定的 MMM 元素,将指定缺省值“Jan”。 对于所有其他未指定的元素,将分配缺省值 0。 以下部分是时间戳记格式的示例:
MMM 元素的有效值包括 如果未指定 timestampformat 修饰符,那么装入实用程序将使用以下两种可能的格式之一来设置时间戳记字段格式:
装入实用程序通过查看 DD 和 HH 之间的分隔符来选择格式。 如果它是短划线“-”,那么装入实用程序使用常规连字符和点格式 (YYYY-MM-DD-HH.MM.SS)。 如果它是空格,那么装入实用程序需要用冒号“:”来分隔 HH、MM 和 SS。 在任一格式中,如果包含微秒字段 (UUUUUUU) ,那么 LOAD 实用程序需要点 "." 作为分隔符。 YYYY-MM-DD-HH.MM.SS.UUUUUU 或 YYYY-MM-DD HH:MM:SS.UUUUUU 可接受。 以下示例说明如何将包含用户定义的日期和时间格式的数据装入到称为调度的表中:
|
usegraphiccodepage | 如果指定了 usegraphiccodepage,那么假定装入图形或双字节字符大对象 (DBCLOB) 数据字段的数据位于图形代码页中。 并且,假定其余数据采用字符代码页。 该图形代码页与该字符代码页相关联。 LOAD 命令通过 codepage 修饰符(如果指定)或通过数据库的代码页(如果未指定 codepage 修饰符)来确定字符代码页。 仅当您恢复的表具有图形数据时,才使用此修饰符以及由删除表恢复生成的定界数据文件。 限制 usegraphiccodepage 修饰符不得与 EXPORT 实用程序创建的 DEL 文件一起指定,因为这些文件包含仅在一个代码页中编码的数据。 文件中的双字节字符大对象 (DBCLOB) 也会忽略 usegraphiccodepage 修饰符。 |
xmlchar | 指定 XML 文档在字符代码页中编码。 此选项对于处理在指定字符代码页中编码但不包含编码声明的 XML 文档很有用。 对于每个文档,如果声明标记存在并且包含编码属性,那么编码必须与字符代码页匹配,否则,将拒绝包含该文档的行。 字符代码页是由 codepage 文件类型修饰符,或应用程序代码页(如果未指定)指定的值。 缺省情况下,文档采用 Unicode 编码,或者它们包含具有 encoding 属性的声明标记。 |
xmlgraphic | 指定 XML 文档在指定的图形代码页中编码。 此选项对于处理在特定图形代码页中编码但不包含编码声明的 XML 文档很有用。 对于每个文档,如果声明标记存在并且包含编码属性,那么编码必须与图形代码页匹配,否则,将拒绝包含该文档的行。 图形代码页是由 codepage 文件类型修饰符指定的值的图形组件。 如果未指定该修饰符,那么将使用应用程序代码页的图形组件。 缺省情况下,文档以 Unicode 编码,或者它们包含具有编码属性的声明标记。 |
修饰符 | 描述 |
---|---|
binarynumerics | 数字(但并非 DECIMAL)数据必须是二进制格式,而不是字符表示。 此格式避免了高成本的转换。 通过使用 reclen 选项指定的固定长度记录,此选项仅支持位置 ASC。 下列规则适用:
NULL 不能存在于受此修饰符影响的列的数据中。 当使用此修饰符时,空白(通常解释为 NULL)被解释为二进制值。 |
nochecklengths | 如果指定了 nochecklengths,那么将尝试装入每行,即使源数据具有超过目标表列大小的列定义。 如果代码页转换导致源数据缩小,那么可以成功装入这样的行。 例如,源中的 4 字节 EUC 数据可以缩小到目标中的 2 字节 DBCS 数据,并且需要一半空间。 如果已知源数据符合所有情况(尽管列定义不匹配),那么此选项很有用。 |
nullindchar=x | x 是单个字符。 此修饰符将表示 NULL 值的字符更改为 x。 x 的缺省值为 Y .2此修饰符对 EBCDIC 数据文件区分大小写,除非字符是英文字母。 例如,如果将 NULL 指示符字符指定为字母 |
packeddecimal | 直接装入压缩十进制数据,因为 binarynumerics 修饰符不包含 DECIMAL 字段类型。 通过使用 reclen 选项指定的固定长度记录,此选项仅支持位置 ASC。 符号 nibble 支持以下值:
NULL 不能存在于受此修饰符影响的列的数据中。 当使用此修饰符时,空白(通常解释为 NULL)被解释为二进制值。 无论服务器平台如何,装入源文件中二进制数据的字节顺序都假定为大尾数法。 在 Windows 操作系统上使用此修饰符时,不得颠倒字节顺序。 此修饰符不能与 implieddecimal 修饰符一起使用。 |
reclen=x | x 是一个整数,其最大值为 32 767。为每行读取 x 个字符,并且不使用换行符来指示行的结束。 |
striptblanks | 在将数据装入可变长度字段时,截断任何尾部空格。 如果未指定此选项,那么将保留空格。 此选项不能与 striptnulls 一起指定。 这些选项是互斥的。 此选项将替换废弃的 t 选项,该选项仅支持较早的兼容性。 |
striptnulls | 在将数据装入可变长度字段时,截断任何尾部的 NULL(0x00 字符)。 如果未指定此选项,那么将保留 NULL。 此选项不能与 striptblanks 一起指定。 这些选项是互斥的。 此选项将替换废弃的 padwithzero 选项,该选项仅支持较早的兼容性。 |
zoneddecimal | 装入分区十进制数据,因为 binarynumerics 修饰符不包含 DECIMAL 字段类型。 通过使用 reclen 选项指定的固定长度记录,此选项仅支持位置 ASC。 半字节符号值可以是以下值之一:
数字的受支持值为 支持的区域值为
|
修饰符 | 描述 |
---|---|
chardelx | x 是单个字符串定界符。 缺省值为双引号 (")。指定的字符用于放置双引号以引起字符 字符串。2, 3 通过使用以下语法,您可以显式指定双引号 (") 作为字符串定界符:
通过使用以下语法,您还可以指定单引号 (') 作为字符串定界符:
|
coldelx | x 是单个字符列分隔符。 缺省值为逗号 (,)。指定的字符用于代替逗号来表示 列的末尾。2, 3 |
decplusblank | 加号字符。 使正十进制值以空格代替加号 (+) 作为前缀。缺省操作是使用加号来前缀正十进制值。 |
decptx | x 是句点作为小数点字符的单个字符。 缺省值为句点 (.)。指定的字符用作小数点 字符的句点。2, 3 |
delprioritychar | 定界符的当前缺省优先级为:记录定界符、字符分隔符、列分隔符。 此修饰符通过将定界符优先级还原为:字符分隔符、记录定界符、列分隔符来保护依赖于较旧优先级的现有应用程序。 语法:
以下示例基于此 DEL 数据文件:
如果指定了 delprioritychar 修饰符,那么此数据文件只包含两行。 第二个 |
keepblanks | 在类型为 CHAR、VARCHAR、LONG VARCHAR 或 CLOB 的每个字段中保留前导空格和尾部空格。 如果没有此选项,那么将移除不在字符定界符内的所有前导空格和尾部空格,并将 NULL 插入到所有空白字段的表中。 以下示例说明如何将数据装入表
TABLE1 并保留数据文件中的所有前导空格和尾部空格:
|
nochardel | 装入实用程序假定在列定界符之间找到的所有字节都是列数据的一部分。 字符定界符作为列数据的一部分进行语法分析。 如果数据是从 Db2 数据库系统导出的 (除非在导出时指定了 nochardel ) ,请勿指定此选项。 提供此修饰符的目的是支持不具有字符定界符的供应商数据文件。 使用不当可能会导致数据丢失或损坏。 此选项不能与 chardelx、delprioritychar 或 nodoubledel 一起指定。 这些选项是互斥的。 |
nodoubledel | 禁止识别双字符定界符。 |
修饰符 | 描述 |
---|---|
forcein | 指示实用程序在代码页不匹配的情况下接受数据,并禁止代码页之间的转换。 检查固定长度的目标字段以验证它们对于数据是否足够大。 如果指定了 nochecklengths,那么不进行检查,并尝试装入每行。 |
nochecklengths | 如果指定了 nochecklengths,那么将尝试装入每行,即使源数据具有超过目标表列大小的列定义。 如果代码页转换导致源数据缩小,那么可以成功装入这样的行。 例如,源中的 4 字节 EUC 数据可以缩小到目标中的 2 字节 DBCS 数据,并且需要一半空间。 如果已知源数据符合所有情况(尽管列定义不匹配),那么此选项很有用。 |
注意
- 日期格式字符串两旁的双引号是必需的。 字段分隔符不能包含下列任何字符:a-z、A-Z 和 0-9。 字段分隔符不能与 DEL 文件格式的字符定界符或字段定界符相同。 如果元素的开始位置和结束位置清晰明确,那么字段分隔符是可选的。 如果使用(取决于修饰符)元素(例如 D、H、M 或 S),那么会存在模糊性,因为条目的长度可变。对于时间戳记格式,必须注意避免月份与分钟描述符之间的模糊性,因为它们都使用字母 M。 月份字段必须在其他日期字段旁边。 分钟字段必须与其他时间字段相邻。 以下是一些模糊的时间戳记格式:
在模糊案例中,实用程序报告错误消息,并且操作失败。"M" (could be a month, or a minute) "M:M" (Which is which?) "M:YYYY:M" (Both are interpreted as month.) "S:M:YYYY" (adjacent to both a time value and a date value)
以下是一些明确的时间戳记格式:"M:YYYY" (Month) "S:M" (Minute) "M:YYYY:S:M" (Month....Minute) "M:H:YYYY:M:D" (Minute....Month)
某些字符 (例如,双引号和反斜杠) 必须以转义字符 (例如, \) 开头。
- 为 chardel、coldel 或 decpt 文件类型修饰符提供的字符值必须在源数据的代码页中指定。可以使用语法
xJJ
或0xJJ
来指定字符代码点(而不是字符符号),其中JJ
是代码点的十六进制表示。 例如,要将#
字符指定为列定界符,请使用以下某个语句:... modified by coldel# ... ... modified by coldel0x23 ... ... modified by coldelX23 ...
移动数据的定界符注意事项
列出了适用于可用作定界符覆盖的字符的限制。- 如果尝试将不受支持的文件类型与 MODIFIED BY 选项配合使用,那么装入实用程序不会发出警告。 如果尝试将不受支持的文件类型与 MODIFIED BY 选项配合使用,那么装入操作将失败,并返回错误代码。
- 如果指定了多个后缀为 ignore、include、missing 和 override 的修饰符,那么将按照它们列出的顺序应用这些修饰符。 在以下语句中,非标识列的隐式隐藏列的数据包含在输入数据中。 虽然所有标识列的数据(无论其隐式隐藏状态如何)都不是。
db2 load from delfile1 of del modified by implicitlyhiddeninclude identitymissing insert into table1
但是,更改以下语句中文件类型修饰符的顺序意味着所有隐式隐藏列(包括隐藏标识列)的数据都包含在输入数据中。 虽然未隐式隐藏的标识列的数据不是。db2 load from delfile1 of del modified by identitymissing implicitlyhiddeninclude insert into table1
codepage=N | usegraphiccodepage | LOAD 行为 |
---|---|---|
不存在 | 不存在 | 假定文件中的所有数据都在数据库代码页中,而不是在应用程序代码页中,即使指定了 CLIENT 选项也是如此。 |
已存在 | 不存在 | 假定文件中的所有数据都在代码页 N 中。重要信息: 如果
N 是单字节代码页,那么图形数据在装入到数据库时将损坏。 |
不存在 | 已存在 | 假定文件中的字符数据都在数据库代码页中,即使指定了 CLIENT 选项也是如此。 假定图形数据都在数据库图形数据的代码页中,即使指定了 CLIENT 选项也是如此。 如果数据库代码页是单字节,那么假定所有数据都在数据库代码页中。 重要信息: 图形数据在装入单字节数据库时损坏。
|
已存在 | 已存在 | 假定字符数据在代码页 N 中。 假定图形数据在 N 的图形代码页中。如果 重要信息: 如果
N 是单字节代码页,那么图形数据在装入到数据库时将损坏。 |