LOAD 命令
LOAD 命令可高效地将大量数据装入到 Db2® 表中。
LOAD 命令在页面级别装入数据,绕过触发器触发和日志记录,并延迟约束检查和索引构建,直到将数据装入到 Db2 表中为止。
存储在服务器上的数据可以采用文件,磁带或命名管道的形式。 存储在远程连接的客户机上的数据可以采用标准文件或命名管道的形式。 还可以从用户定义的游标或使用用户编写的脚本或应用程序装入数据。 如果表的 COMPRESS 属性设置为 YES,那么装入的数据将对表中存在字典的每个数据和数据库分区 (包括表的 XML 存储对象中的数据) 进行压缩。
快速链接到 装入实用程序的文件类型修饰符。
限制
装入实用程序不支持在层次结构级别装入数据。 装入实用程序与范围集群表不兼容。 装入实用程序不支持 CREATE TABLE 或 ALTER TABLE 语句的 NOT LOGGED INITIALLY 参数。
作用域
可以在单个请求中针对多个数据库分区发出此命令。
权限
- DATAACCESS
- 表模式上的模式 DATAACESS
- 对数据库的 LOAD 权限或对模式的 SCHEMA_LOAD 权限以及以下特权:
- 当以 INSERT 方式, TERMINATE 方式 (用于终止先前的装入插入操作) 或 RESTART 方式 (用于重新启动先前的装入插入操作) 调用 LOAD 实用程序时,对表的 INSERT 或 INSERTIN 特权
- 当以 REPLACE 方式, TERMINATE 方式 (用于终止先前的装入替换操作) 或 RESTART 方式 (用于重新启动先前的装入替换操作) 调用装入实用程序时,对表执行 INSERT 或 INSERTIN 以及 DELETE 或 DELETEIN 特权
- 对异常表的 INSERT 或 INSERTIN 特权 (如果此类表用作装入操作的一部分)。
- 要将数据装入到具有受保护列的表中,会话授权标识必须通过允许对表中所有受保护列进行写访问的组或角色直接或间接具有 LBAC 凭证。 否则,装入失败并返回错误 (SQLSTATE 5U014)。
- 要将数据装入到具有受保护行的表中,会话授权标识必须保存满足以下条件的安全标号:
- 安全标号是保护表的安全策略的一部分。
- 安全标号已直接或间接通过用于写访问或所有访问的组或角色授予会话授权标识。
将数据装入到具有受保护行的表中时,目标表将有一个数据类型为 DB2SECURITYLABEL 的列。 如果输入数据行未包含该列的值,那么该行会被拒绝,除非在 load 命令中指定了
usedefaults文件类型修饰符,此时将使用您拥有的安全策略(用于保护表)中对应写访问权的安全标号。 如果不保留写访问权的安全标号,那么将拒绝该行,并继续处理下一行 - 对于具有受保护行的表,如果指定了 REPLACE 选项,那么会话授权标识必须有权删除该表。
- 如果指定了 LOCK WITH FORCE 选项,那么需要任何 SYSMAINT、SYSCTRL 或 SYSADM 权限。
- 如果该表已激活行访问控制,那么该表上的 LOAD REPLACE 将需要删除该表的能力。 具体而言,必须在表上具有 CONTROL ,在包含表的模式上具有 DROPIN 或 SCHEMAADM ,或者在表上具有 DBADM。
由于所有装入进程 (通常是所有 Db2 服务器进程) 都由实例所有者拥有,并且所有这些进程都使用实例所有者的标识来访问所需的文件,因此实例所有者必须具有对输入数据文件的读访问权。 无论谁调用该命令,实例所有者都必须能够读取这些输入数据文件。
需要的连接
数据库。 如果启用了隐式连接,那么将建立与缺省数据库的连接。
。 不需要显式连接。 如果已建立与数据库的连接,那么将尝试隐式连接到本地实例。
命令语法
命令参数
- CLIENT
- 指定要装入的数据位于远程连接的客户机上。 如果未从远程客户机调用装入操作,那么将忽略此选项。 如果与 CURSOR 文件类型一起指定,那么将忽略此选项。注:
- 即使指定了 CLIENT 关键字, dumpfile 和 lobsinfile 修饰符以及 XML FROM 选项也会引用服务器上的文件。
- 在远程装入操作期间,不会执行代码页转换。 如果数据的代码页与服务器的代码页不同,那么应使用
codepage修饰符指定数据代码页。
在以下示例中,位于远程连接的客户机上的数据文件 (/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 选项。 filename 参数的最大长度为
256 - length of absolute path to file - 1。remotefilename 是指位于远程存储器上的文件,例如 IBM® Cloud Object Storage 或 Amazon Simple Storage Service (S3) ,并且正在使用存储器访问别名进行访问。 需要本地登台空间来临时存储从远程存储服务器传输的文件; 请参阅 远程存储需求。 远程文件名的语法为:DB2REMOTE://<alias>//<storage-path>/<file-name>如果指定了多个名称,那么将按顺序处理这些名称。 如果指定的最后一项是磁带设备,那么将提示用户使用另一磁带。 有效的响应选项为:- c
- 继续 - 继续使用生成警告消息的设备 (例如,安装了新磁带时)。
- d
- 设备终止 - 停止使用生成警告消息的设备 (例如,当没有更多磁带时)。
- t
- 终止 - 终止所有设备。
注:- 使用标准文件名。 如果服务器是远程服务器,那么必须使用标准文件名。 如果数据库与调用者位于同一数据库分区上,那么可以使用相对路径。
- 如果使用 ADMIN_CMD 过程的 EXPORT 命令将数据导出到文件中,那么该数据文件由受防护用户标识拥有。 实例所有者通常无法访问此文件。 要从 CLP 或 ADMIN_CMD 过程运行 LOAD ,数据文件必须可由实例所有者标识访问,因此必须向实例所有者授予对数据文件的读访问权。
- 如果文件在物理上是分开的,但在逻辑上却是一个文件,那么支持从多个 IXF 文件装入数据。 如果文件在逻辑上和物理上都是分开的,那么不受支持。 如果指定了多个逻辑上和物理上分开的文件,那么将忽略第一个文件之后的任何文件。 (如果多个物理文件都是通过一次调用 EXPORT 命令创建的,那么将在逻辑上视为一个物理文件。)
- 如果装入驻留在客户机上的数据,那么该数据必须采用标准文件或命名管道的格式。
- 将 XML 数据从文件装入分区数据库环境中的表时, XML 数据文件必须可供正在进行装入的所有数据库分区读取。
- OF filetype
- 指定数据的格式:
- ASC (非定界 ASCII 格式)
- DEL(定界 ASCII 格式)
- IXF (Integration Exchange 格式, PC 版本) 是由 Db2 数据库独占使用的二进制格式。
- CURSOR(针对 SELECT 或 VALUES 语句声明的游标)。
注:- 使用 CURSOR 文件类型将 XML 数据装入分布式数据库环境中的表时,不支持 PARTITION_ONLY 和 LOAD_ONLY 方式。
- 使用 DECLARE CURSOR 语句期间指定了 DATABASE 关键字的 CURSOR 文件类型执行装入时,装入将在内部创建单独的应用程序以访存数据; 而未指定 DATABASE 关键字时,装入将访存同一应用程序中的数据。 这两个案例之间的差异也会导致锁定行为差异。 尤其是,如果您当前使用与当前连接的数据库相同的数据库 (以及与当前连接相同的用户标识和密码 (如果已指定)) 来指定 DATABASE 关键字,那么可能会发生锁定问题 (例如,锁定等待或锁定超时,具体取决于数据库配置) ,可以通过省略 DATABASE 关键字来解决这些问题。
- LOBS FROM lob-path
- 包含要装入的 LOB 值的数据文件的路径。 路径必须以斜杠结尾。 如果指定了 CLIENT 选项,那么路径必须是标准路径。 LOB 数据文件的名称存储在将装入到 LOB 列中的主数据文件 (ASC , DEL 或 IXF) 中。 可以指定的最大路径数为 999。 这将隐式激活 LOBSINFILE 行为。
当与 CURSOR 文件类型一起指定时,将忽略此选项。
- 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 文件类型的唯一有效方法。对于方法 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 文件的路径。 XDS 包含在将装入到 XML 列中的列中的主数据文件 (ASC , DEL 或 IXF) 中。
- XMLPARSE
- 指定如何解析 XML 文档。 如果未指定此选项,那么 XML 文档的解析行为将由 CURRENT IMPLICIT XMLPARSE OPTION 专用寄存器的值确定。
- STRIP WHITESPACE
- 指定在解析 XML 文档时除去空格。
- PRESERVE WHITESPACE
- 指定在解析 XML 文档时不除去空格。
- XMLVALIDATE
- 指定在适用时针对模式验证 XML 文档。
- USING XDS
- 根据主数据文件中的 XML 数据说明符 (XDS) 标识的 XML 模式验证 XML 文档。 缺省情况下,如果使用 USING XDS 子句调用 XMLVALIDATE 选项,那么用于执行验证的模式将由 XDS 的 SCH 属性确定。 如果 XDS 中不存在 SCH 属性,那么除非 DEFAULT 子句指定了缺省模式,否则不会进行模式验证。
DEFAULT、IGNORE 和 MAP 子句可用于修改模式确定行为。 这三个可选子句直接应用于 XDS 的规范,而不适用于彼此。 例如,如果由于 DEFAULT 子句指定了模式而选择了该模式,那么如果 IGNORE 子句也指定了该模式,那么将不会忽略该模式。 同样,如果由于在 MAP 子句中指定了模式作为对的第一部分而选择了该模式,那么如果在另一个 MAP 子句对的第二部分中也指定了该模式,那么将不会重新映射该模式。
- USING SCHEMA schema-sqlid
- 将针对具有指定 SQL 标识的 XML 模式验证 XML 文档。 在这种情况下,将忽略所有 XML 列的 XML 数据说明符 (XDS) 的 SCH 属性。
- USING SCHEMALOCATION HINTS
- 将根据源 XML 文档中的 XML 模式位置提示所标识的模式来验证 XML 文档。 如果在 XML 文档中找不到 schemaLocation 属性,那么不会进行任何验证。 当指定 USING SCHEMALOCATION HINTS 子句时,将忽略所有 XML 列的 XML 数据说明符 (XDS) 的 SCH 属性。
- IGNORE schema-sqlid
- 仅当指定了 USING XDS 参数时,才能使用此选项。 IGNORE 子句指定一个或多个模式的列表以忽略它们是否由 SCH 属性标识。 如果已装入的 XML 文档的 XML 数据说明符中存在 SCH 属性,并且由 SCH 属性标识的模式包含在要忽略的模式列表中,那么不会对已装入的 XML 文档进行模式验证。注:
如果在 IGNORE 子句中指定了模式,那么它也不能存在于 MAP 子句中模式对的左侧。
IGNORE 子句仅适用于 XDS。 如果由 IGNORE 子句指定,那么随后将不会忽略 MAP 子句所映射的模式。
- DEFAULT schema-sqlid
- 仅当指定了 USING XDS 参数时,才能使用此选项。 当装入的 XML 文档的 XML 数据说明符 (XDS) 不包含标识 XML 模式的 SCH 属性时,通过 DEFAULT 子句指定的模式将标识用于验证的模式。
DEFAULT 子句优先于 IGNORE 和 MAP 子句。 如果 XDS 满足 DEFAULT 子句,那么将忽略 IGNORE 和 MAP 规范。
- MAP schema-sqlid
- 仅当指定了 USING XDS 参数时,才能使用此选项。 使用 MAP 子句来指定备用模式,以代替由 XML 数据说明符 (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 个字节。
- 15 KB 的开销 (如果数据文件包含长字段数据或 LOB)。 如果指定 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 列添加到 Db2 版本 9.7 或更高版本中的表时,或者如果使用联机表移动来迁移表,才能为表的 XML 存储对象创建压缩字典。
- 如果 LOAD REPLACE KEEPDICTIONARY 操作中断,那么在发出 LOAD RESTART 或 LOAD TERMINATE 之后,装入实用程序可以恢复。 从中断的 LOAD REPLACE KEEPDICTIONARY 操作恢复后,可能无法保留现有 XML 存储对象字典。 如果使用 LOAD RESTART ,那么将创建新的 XML 存储对象字典
- RESETDICTIONARY
- 此伪指令指示 LOAD REPLACE 处理为表数据对象构建新字典,前提是表 COMPRESS 属性为 YES。
如果 COMPRESS 属性为 NO ,并且表中已存在字典,那么将除去该字典,并且不会将新字典插入到表中。
此选项是 按列组织的 表的缺省值。
对于按列组织的表,不能在数据库分区子集 (SQL27906N) 上指定 LOAD REPLACE … RESETDICTIONARY 。 如果包含 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 列添加到 Db2 版本 9.7 或更高版本中的表时,或者如果使用联机表移动来迁移表,才能为表的 XML 存储对象创建压缩字典。
- 如果存在字典并且已启用压缩属性,但没有要装入到表分区中的记录,那么无法构建新字典,并且 RESETDICTIONARY 操作将不会保留现有字典。
- RESETDICTIONARYONLY
- 此选项创建基于输入文件且不装入任何行的列压缩字典。 在使用基于 SQL 的实用程序摄取任何数据之前,可以使用此选项来创建压缩字典。
此选项仅适用于 按列组织的 表。
不能在数据库分区的子集上指定 LOAD REPLACE … RESETDICTIONARYONLY (SQL27906N)。 如果包含 OUTPUT_DBPARTNUMS 选项,那么必须指定所有数据库分区。
- TERMINATE
- 装入实用程序可执行的四种方式之一。 终止先前中断的装入操作,并将该操作回滚到它启动的时间点,即使传递了一致性点也是如此。 操作中涉及的任何表空间的状态都将恢复正常,并且所有表对象都将保持一致 (索引对象可能标记为无效,在这种情况下,将在下次访问时自动执行索引重建)。 如果要终止的装入操作是 LOAD REPLACE,那么将在 LOAD TERMINATE 操作之后将该表截断为空表。 如果要终止的装入操作是 LOAD INSERT,那么表将在 LOAD TERMINATE 操作之后保留其所有原始记录。 有关字典管理的摘要,请参阅表 3。
LOAD TERMINATE 选项不会从表空间中除去备份暂挂状态。
- RESTART
- 重新启动中断的装入操作。 装入操作自动从装入、构建或删除阶段中的最后一个一致性点继续。 有关字典管理的摘要,请参阅表 4。以下表不支持 RESTART 参数:
- 按列组织的表
- 使用随机生成方法的随机分布表
- INTO table-name
- 指定要将数据装入其中的数据库表。 此表不能是系统表、已声明的临时表或创建的临时表。 可以指定别名,也可以指定标准表名或不合格表名。 标准表名的格式为
schema.tablename。 如果指定了未限定的表名,那么将使用 CURRENT SCHEMA 限定该表。如果数据库表包含隐式隐藏列,那么必须指定是否在装入操作中包含隐藏列的数据。 使用下列其中一种方法来指示是否包含隐藏列的数据:- 使用 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 的 LOAD 会使表空间处于备份暂挂状态。 例如,使用 COPY NO 和 INDEXING MODE DEFERRED 执行 LOAD 将使索引需要刷新。 对表的某些查询可能需要进行索引扫描,并且在刷新索引之前不会成功。 如果索引位于处于备份暂挂状态的表空间中,那么无法刷新该索引。 在这种情况下,在进行备份之前,将不允许访问该表。 当查询访问索引时,数据库将自动执行索引刷新。 如果未指定 COPY NO, COPY YES或 NONRECOVERABLE 之一,并且数据库可恢复 (logarchmeth1 或 logarchmeth2 设置为 OFF以外的值) ,那么缺省值为 COPY NO 。
- COPY YES
- 保存已装入数据的副本。 如果禁用正向恢复,那么此参数无效。
- USE TSM
- 指定将使用 IBM Tivoli® Storage Manager存储副本。
- OPEN num-sess SESSIONS
- 要用于 TSM 或供应商产品的 I/O 会话数。 缺省值为 1。
- TO device/directory
- 指定将在其上创建副本映像的设备或目录。
该目录可以位于远程存储器上,例如 IBM® Cloud Object Storage 或 Amazon Simple Storage Service (S3) ,并且正在使用存储器访问别名进行访问。 需要本地登台空间来临时存储要传输到远程存储服务器的副本映像。 当前支持远程存储器的最大副本映像大小为 5GB。
- LOAD lib-name
- 包含要使用的供应商备份和复原 I/O 功能的共享库 (Windows 操作系统上的 DLL) 的名称。 它可以包含完整路径。 如果未提供完整路径,那么它将缺省为用户出口程序所在的路径。
- NONRECOVERABLE
- 指定将装入事务标记为不可恢复,并且无法通过后续前滚操作将其恢复。 前滚实用程序将跳过事务,并将正在其中装入数据的表标记为
无效
。 该实用程序还将忽略该对表执行的任何后续事务。 前滚操作完成后,只能从在不可恢复装入操作完成后的落实点之后生成的备份 (完全或表空间) 中删除或复原此类表。如果指定了此选项,在装入操作完成后就不会将表空间置于“备份暂挂”状态,并且在装入操作执行期间不必创建所装入数据的副本。 如果未指定 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
- 指定装入实用程序在构建表对象时将为解析,转换和格式化记录而创建的进程或线程数。 此参数旨在利用每个数据库分区运行的进程数。 在装入预先排序的数据时,它特别有用,因为保留了源数据中的记录顺序。 如果此参数的值为零或尚未指定,那么 LOAD 实用程序将在运行时使用智能缺省值 (通常基于可用 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 也是如此。
- DISK_PARALLELISM n
- 指定装入实用程序将为将数据写入表空间容器而创建的进程或线程数。 如果未指定值,那么实用程序将根据表空间容器的数量和表的特征来选择智能缺省值。
- INDEXING MODE
- 指定装入实用程序是重建索引还是以递增方式扩展索引。 有效值为:
- AUTOSELECT
- 装入实用程序将自动决定 REBUILD 或 INCREMENTAL 方式。 该决策基于正在装入的数据量和索引树的深度。 与索引树的深度相关信息存储在索引对象中。 填充此信息不需要 RUNSTATS。 AUTOSELECT 是缺省索引方式。
- REBUILD
- 将重建所有索引。 实用程序必须具有足够的资源来对旧表数据和附加表数据的所有索引键部件排序。
如果开启了 LogIndex构建数据库配置参数,那么事务日志在创建后将包含每个索引页面的图像。 如果关闭 LogIndex构建数据库配置参数,那么索引管理器仅记录每个页面的分配和初始化 (大约每页 250 字节,而不是每个页面的非空部分)。
- INCREMENTAL
- 将使用新数据扩展索引。 此方法使用索引可用空间。 它只需要足够的排序空间来为插入的记录追加索引键。 仅当索引对象有效且在装入操作开始时可访问 (例如,在指定了 DEFERRED 方式的装入操作之后,该方法立即无效) 时,才支持此方法。 如果指定了此方式,但由于索引的状态而不受支持,那么将返回警告,并且装入操作将以 REBUILD 方式继续。 同样,如果在装入构建阶段开始执行装入重新启动操作,那么不支持 INCREMENTAL 方式。
如果开启了 LogIndex构建数据库配置参数,那么 Db2 软件将生成日志记录,以便将每个键插入到索引中以及执行任何页面分割。 如果关闭此参数 (不使用 HADR 时很常见) ,那么索引管理器执行的索引日志记录量取决于是否指定了 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
- 从使用 DATABASE 关键字声明游标的游标执行装入时,或者使用 API sqlu_remotefetch_entry 介质条目时,如果此选项设置为 YES,那么装入实用程序将尝试从远程数据源并行访存 (如果可能)。 目前,仅当游标的 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 参数。
- REDIRECT
- INPUT FROM
- BUFFER input-buffer
- input-buffer 中指定的字节流将传递到执行给定可执行文件的进程的 STDIN 文件描述符中。
- FILE input-file
- 此客户机端文件的内容将传递到执行给定可执行文件的进程的 STDIN 文件描述符中。
- OUTPUT TO
- FILE output-file
- 将 STDOUT 和 STDERR 文件描述符捕获到指定的标准服务器端文件。
- PARALLELIZE
- 通过同时调用多个用户出口进程来增加进入 LOAD 实用程序的数据吞吐量。 此选项仅适用于多分区数据库环境,在单分区数据库环境中将被忽略。
使用定制应用程序(用户出口)移动数据
。 - PARTITIONED DB CONFIG partitioned-db-option
- 允许您对分布在多个数据库分区中的表执行装入。 PARTITIONED DB CONFIG 参数允许您指定特定于分区数据库的配置选项。 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 Ydb2 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 用来指示:装入 TABLE1 时,对于给定的行,是否将 COL2 和 COL3 设置为 NULL。 对于给定记录,如果该列的空指示符位置包含
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 ASCFILE7db2 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 数据包含在 6 文件 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 参数包含 2 路径,当装入程序需要这些文件时,将搜索这些路径以查找指定的 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 格式不一致的初始字符的列将生成错误,将拒绝该记录。 您可以将此类记录写入转储文件。
22,34,"bob"
24,55,"sam" sdfsam,并且将在警告中标记字符
sdf。 不会拒绝该记录。 另一个示例:
22 3, 34,"bob"LOAD 实用程序将装入 22,34,"bob" 并生成一条警告消息,该消息指出忽略了第一列中 22 后面的某些数据。 不会拒绝该记录。
示例 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,请发出以下命令:
在本例中,由于指示 LOAD 实用程序使用用户提供的值来覆盖系统生成的标识值,所以将拒绝第 1 行和第 2 行。 但是,如果用户未提供值,就必须拒绝该行,这是因为标识列在隐式情况下不能为 NULL。db2 load from datafile1.del of del modified by identityoverride replace into table2 - 如果将 DATAFILE1 装入到 TABLE2 中,但未使用任何与标识相关的文件类型修饰符,那么将装入第 1 行和第 2 行,但将拒绝第 3 行和第 4 行,这是因为这两行提供了它们自己的非空值,而标识列是 GENERATED ALWAYS 列。
示例 5(装入具有行更改时间戳记列的表)
TABLE1 有 4 列:
- 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。
- 如果在不使用任何 ROW CHANGE 相关文件类型修饰符的情况下将 DATAFILE1 装入到 TABLE2 中,那么将装入行 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.table1db2 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 中指示的模式进行验证。 如果有任何没有 SCH 属性的 XDS 值,那么将根据此子句中使用的模式验证这些文档。
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 的任何文档。 此外,将针对 S5.SCHEMA_E验证 SCH 属性为 S3.SCHEMA_C 的任何文档。
- 用户希望使用 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 标识为 "S8.SCHEMA_H" 的 XML 模式用于验证文件 xmlfile.001.xml中的文档,因为 "S8.SCHEMA_H" 已指定为要使用的缺省模式。<XDS FIL='xmlfile.001.xml' /> - 对于包含以下 XDS 的 XML 列:
不会对文件 xmlfile.002.xml中的文档进行模式验证,因为虽然 XDS 指定 "S10.SCHEMA_J" 作为要使用的模式,但该模式是 IGNORE 子句的一部分。 文档内容可以在文件中的字节偏移 10 处找到(也就是 第 11 个字节),并且长度为 500 个字节。<XDS FIL='xmlfile.002.xml' OFF='10' LEN='500' SCH='S10.SCHEMA_J' /> - 对于包含以下 XDS 的 XML 列:
SQL 标识为 "S3.SCHEMA_C" 的 XML 模式用于验证文件<XDS FIL='xmlfile.003.xml' SCH='S6.SCHEMA_F' />xmlfile.003.xml中的文档。 这是因为 MAP 子句指定应该将模式 "S6.SCHEMA_F" 映射到模式 "S3.SCHEMA_C"。 未执行进一步映射,因此模式 "S3.SCHEMA_C" 到模式 "S5.SCHEMA_E" 的映射在此情况下不适用。 - 对于包含以下 XDS 的 XML 列:
SQL 标识为 "S11.SCHEMA_K" 的 XML 模式用于验证文件 xmlfile.004.xml中的文档。 在此情况下,不适用任何 DEFAULT、IGNORE 或 MAP 规范。<XDS FIL='xmlfile.004.xml' SCH='S11.SCHEMA_K' />
- XMLVALIDATE USING SCHEMA
- 用户希望根据单个 SCHEMA 来验证所有 XML 文档。 对于以下 XMLVALIDATE 子句:
XMLVALIDATE USING SCHEMA S2.SCHEMA_B- 对于包含以下 XDS 的 XML 列:
使用具有 SQL 标识 "S2.SCHEMA_B" 的 XML 模式验证文件 xmlfile.001.xml 中的文档。<XDS FIL='xmlfile.001.xml' /> - 对于包含以下 XDS 的 XML 列:
使用具有 SQL 标识 "S2.SCHEMA_B" 的 XML 模式验证文件 xmlfile.002.xml 中的文档。 由于正在使用 USING SCHEMA 子句指定的模式执行验证,因此将忽略 SCH 属性。<XDS FIL='xmlfile.002.xml' SCH='S1.SCHEMA_A' />
- XMLVALIDATE USING SCHEMALOCATION HINTS
用户希望对照位于文档本身中的模式信息进行验证。 对于以下 XMLVALIDATE 子句:
XMLVALIDATE USING SCHEMALOCATION HINTS- 对于包含以下 XDS 的 XML 列:
所使用的 XML 模式由文档内容中的 schemaLocation 属性确定,如果不存在,那么不会进行验证。<XDS FIL='xmlfile.001.xml' /> - 对于包含以下 XDS 的 XML 列:
所使用的 XML 模式由文档内容中的 schemaLocation 属性确定,如果不存在,那么不会进行验证。 由于正在使用 SCHEMALOCATION HINTS执行验证,因此将忽略 SCH 属性。<XDS FIL='xmlfile.002.xml' SCH='S1.SCHEMA_A' />
使用说明
- 数据将按输入文件中的顺序装入。 如果需要特定序列,那么应在尝试装入之前对数据进行排序。 如果不需要保留源数据顺序,请考虑使用 ANYORDER 文件类型修饰符,如以下
装入实用程序的文件类型修饰符
部分中所述。 - 装入实用程序根据现有定义构建索引。 异常表用于处理唯一键上的重复项。 该实用程序不会强制实施引用完整性,执行约束检查或更新依赖于正在装入的表的具体化查询表。 包含引用或检查约束的表置于“设置完整性暂挂”状态。 使用 REFRESH IMMEDIATE 定义的依赖于正在装入的表的摘要表也将处于 "设置完整性暂挂" 状态。 发出 SET INTEGRITY 语句以将表脱离“设置完整性暂挂”状态。 无法对复制的具体化查询表执行装入操作。
- 如果表中存在集群索引,那么在装入之前应根据集群索引对数据进行排序。 但是,在装入到多维集群 (MDC) 表之前,不需要对数据进行排序。
- 如果在装入受保护表时指定异常表,那么将向该表发送任何受无效安全标号保护的行。 这可能允许有权访问异常表的用户访问他们通常无权访问的数据。 为了获得更好的安全性,请谨慎授予异常表访问权的人员,一旦修复每行并将其复制到正在装入的表中,请立即删除异常表。
- 内部格式的安全标号可能包含换行符。 如果使用 DEL 文件格式装入文件,那么这些换行符可能会被误认为是定界符。 如果存在此问题,请通过在 LOAD 命令中指定 delprioritychar 文件类型修饰符,将较旧的缺省优先级用于定界符。
- 对于使用 CURSOR 文件类型 (其中在 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 实用程序可能会生成图像文件的非常大的副本。 当 LOAD 命令为装入的每个 LOB/LF 列值的副本映像写入数据的整个缓冲区时,需要执行此行为。 缓冲区是一个内部对象,它的大小由几个内部和外部因素决定。 通常,缓冲区大小在 68KB 到几百 KB 之间。
- 不支持在数据库之间装入 XML 文档,并返回错误消息 SQL1407N。
- LOAD 实用程序不支持装入含有引用受防护过程的列的表中。 如果对此类表发出 LOAD 命令,那么将接收到错误消息 SQL1376N。 要解决此限制,可以重新定义要取消防护的例程或使用导入实用程序。
- 如果表包含生成的列表达式(其中用户定义函数是编译的复合 SQL),那么只能将 LOAD 实用程序与
generatedoverride文件类型修饰符配合使用,以将数据插入到表中。 您还可以使用导入实用程序将数据插入这些表中。 - 如果数据库表包含隐式隐藏列,那么必须指定是否在装入操作中包含隐藏列的数据。
- IMPORT 实用程序与表中的列数和数据文件中的字段数不匹配。 该实用程序检查数据文件中是否有足够的数据,如果数据文件中的某行不包含足够的数据列,那么如果没有数据的相应表列定义为 NOT NULL ,那么可以使用警告消息来拒绝该行,或者如果相应表列定义为 NULL ,那么可以在没有警告消息的情况下成功插入该行。 或者,如果某行包含的列数超过所需列数,那么将处理足够的列数,同时省略其余的数据列,并且不会给出警告消息。
- STATISTICS 选项仅适用于 LOAD REPLACE 选项,而不适用于其他 LOAD 命令选项。
- 如果 LOAD 实用程序与 COPY YES 选项配合使用,并且表包含 LOB 列,那么即使使用 NOT COMPACT 定义 LOB 列, LOAD 也将始终强制执行 COMPACT 行为。
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 列添加到 Db2 版本 9.7 或更高版本中的表时,或者如果使用联机表移动来迁移表,才能为表的 XML 存储对象创建压缩字典。
- 在表已启用数据捕获的特殊情况下,将保留表行 Data Dictionary。
LOAD RESTART 将表截断为达到最后一个一致性点。 作为 LOAD RESTART 处理的一部分,如果在获取最后一个 LOAD 一致性点时表中存在压缩字典,那么该压缩字典将存在于该表中。 在这种情况下, LOAD RESTART 将不会创建新的字典。 关于可能条件的摘要,请参阅表 4。
| 表 COMPRESS 属性 | 表行数据字典在 LOAD 一致性点之前存在?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 列添加到 Db2 版本 9.7 或更高版本中的表时,或者如果使用联机表移动来迁移表,才能为表的 XML 存储对象创建压缩字典。
装入实用程序的文件类型修饰符
| 修饰符 | 描述 |
|---|---|
| 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 并继续装入。 这将重新生成所有生成的列值。 此修饰符不能与 generatedmissing 或 generatedignore 修饰符一起使用。 此修饰符不能用于 按列组织的 表 (SQLSTATE 42858)。 使用随机 (按生成) 方法的随机分布表具有内部生成的名为 RANDOM_DISTRIBUTION_KEY的列。 此修饰符不适用于该列,仅适用于表中的其他生成列。 将始终重新生成 RANDOM_DISTRIBUTION_KEY 的值。 |
| identityignore | 此修饰符通知 LOAD 实用程序,标识列的数据存在于数据文件中,但应该忽略。 这将导致实用程序生成所有身份值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 标识列,行为将相同。 这意味着对于 GENERATED ALWAYS 列,不会拒绝任何行。 此修饰符不能与 identitymissing 或 identityoverride 修饰符一起使用。 |
| identitymissing | 如果指定了此修饰符,那么实用程序将假定输入数据文件不包含标识列 (甚至不包含 NULL) 的数据,因此将为每行生成一个值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 标识列,行为将相同。 此修饰符不能与 identityignore 或 identityoverride 修饰符一起使用。 |
| identityoverride | 仅当要装入的表中存在定义为 GENERATED ALWAYS 的标识列时,才应使用此修饰符。 它指示实用程序接受此类列的显式,非 NULL 数据(与这些类型的标识列的正常规则相反)。 当必须将表定义为 GENERATED ALWAYS 时,或者从使用 ROLLFORWARD DATABASE 命令上的 DROPPED TABLE RECOVERY 选项恢复的数据装入表时,从另一数据库系统迁移数据时,这很有用。 使用此修饰符时,将拒绝标识列没有数据或数据为 NULL 的任何行 (SQL3116W)。 此修饰符不能与 identitymissing 或 identityignore 修饰符一起使用。 使用此选项时, LOAD 实用程序将不会尝试维护或验证表的标识列中值的唯一性。 |
| implicitlyhiddeninclude | 如果指定了此修饰符,那么实用程序假定输入数据文件包含隐式隐藏列的数据,并且也将装入此数据。 此修饰符不能与 implicitlyhiddenmissing 修饰符一起使用。 请参阅 注释 部分,以获取有关指定了多个修饰符时的优先顺序的信息。 使用随机生成方法的随机分布表将隐藏列作为其称为 RANDOM_DISTRIBUTION_KEY 的分布列。 此修饰符不适用于该列,仅适用于表中的其他隐藏列。 RANDOM_DISTRIBUTION_KEY 将被视为缺失。 |
| implicitlyhiddenmissing | 如果指定了此修饰符,那么实用程序将假定输入数据文件不包含隐式隐藏列的数据,并且该实用程序将为这些隐藏列生成值。 此修饰符不能与 implicitlyhiddeninclude 修饰符一起使用。 请参阅 注释 部分,以获取有关指定了多个修饰符时的优先顺序的信息。 |
| 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/,其中 filename.ext 是包含 LOB 的文件的名称, nnn 是文件中 LOB 的偏移量 (以字节计) , mmm 是 LOB 的长度 (以字节计)。 例如,如果字符串 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 方式,那么文件应该具有头。 唯一需要使用 noheader 修饰符的情况是要使用没有头的文件执行 LOAD_ONLY 操作。 |
| norowwarnings | 禁止有关被拒绝行的所有警告。 |
| pagefreespace=x | x 是 0 和 100 之间的整数(含 0 和 100)。 该值被解释为留作可用空间的每个数据页的百分比。 如果指定的值由于最小行大小 (例如,长度至少为 3 000 字节的行以及值为 50的 x ) 而无效,那么该行将放置在新页面上。 如果指定了值 100 ,那么每行都将驻留在新页面上。 表的 PCTFREE 值确定每页指定的可用空间量。 如果尚未设置装入操作上的 pagefreespace 值或表上的 PCTFREE 值,那么实用程序将在每个页面上填充尽可能多的空间。 pagefreespace 设置的值将覆盖为表指定的 PCTFREE 值。 |
| periodignore | 此修饰符通知 LOAD 实用程序,在数据文件中存在句点列的数据,但应将其忽略。 当指定此修饰符时,所有周期列值都由实用程序生成。 此修饰符不能与 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 数据(与这些类型的行更改时间戳记列的正常规则相反)。 当必须将表定义为 GENERATED ALWAYS 时,或者从使用 ROLLFORWARD DATABASE 命令上的 DROPPED TABLE RECOVERY 选项恢复的数据装入表时,从另一数据库系统迁移数据时,这很有用。 使用此修饰符时,将拒绝 ROW CHANGE TIMESTAMP 列中没有数据或数据为 NULL 的任何行 (SQL3116W)。 此修饰符不能与 rowchangetimestampmissing 或 rowchangetimestampignore 修饰符一起使用。 使用此选项时, LOAD 实用程序将不会尝试维护或验证表的行更改时间戳记列中值的唯一性。 |
| 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 | 此修饰符通知 LOAD 实用程序 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 是源文件中时间戳记的格式。1 有效时间戳记元素为: |
| timestampformat="x"(续) | 对于未指定的 YYYY、M、MM、D、DD 或 DDD 元素,将会指定缺省值 1。 对于未指定的 MMM 元素,将指定缺省值“Jan”。 对于所有其他未指定的元素,将分配缺省值 0。 以下部分是时间戳记格式的示例:
MMM 元素的有效值包括: "jan" , "feb" , "mar" , "apr" , "may" , "jun" , "jul" , "aug" , "sep" , "oct" , "nov" 和 "dec"。 这些值区分大小写。 如果未指定 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)数据必须是二进制格式,而不是字符表示。 这可避免执行成本高昂的转换。 此选项仅受位置 ASC 支持,使用 reclen 选项指定的固定长度记录。 下列规则适用:
受此修饰符影响的列的数据中不能存在 NULL。 当使用此修饰符时,空白(通常解释为 NULL)被解释为二进制值。 |
| nochecklengths | 如果指定了 nochecklengths,那么将尝试装入每行,即使源数据具有超过目标表列大小的列定义。 如果代码页转换导致源数据缩小,那么可以成功装入此类行; 例如,源中的 4 字节 EUC 数据可以缩小到目标中的 2 字节 DBCS 数据,并且需要一半的空间。 如果已知尽管列定义不匹配,但源数据在所有情况下都适合,那么此选项特别有用。 |
| nullindchar=x | x 是单个字符。 将表示 NULL 值的字符更改为 x。 x 的缺省值为 Y.2对于 EBCDIC 数据文件,此修饰符区分大小写,但字符为英文字母时除外。 例如,如果将 NULL 指示符字符指定为字母 |
| packeddecimal | 直接装入压缩十进制数据,因为 binarynumerics 修饰符不包含 DECIMAL 字段类型。 此选项仅受位置 ASC 支持,使用 reclen 选项指定的固定长度记录。 符号啃的受支持值包括:
受此修饰符影响的列的数据中不能存在 NULL。 当使用此修饰符时,空白(通常解释为 NULL)被解释为二进制值。 无论服务器平台如何,都假定装入源文件中二进制数据的字节顺序为大字节; 即,在 Windows 操作系统上使用此修饰符时,不得反转字节顺序。 此修饰符不能与 implieddecimal 修饰符一起使用。 |
| reclen=x | x 是一个整数,其最大值为 32 767。为每行读取 x 个字符,并且不使用换行符来指示行的结束。 |
| striptblanks | 将数据装入到变长字段中时,截断任何尾部空格。 如果未指定此选项,那么将保留空格。 此选项不能与 striptnulls 一起指定。 这些是互斥选项。 此选项将替换废弃的 t 选项,该选项仅支持较早的兼容性。 |
| striptnulls | 将数据装入到变长字段中时,截断任何尾部 NULL (0x00 字符)。 如果未指定此选项,那么将保留 NULL。 此选项不能与 striptblanks 一起指定。 这些是互斥选项。 此选项将替换废弃的 padwithzero 选项,该选项仅支持较早的兼容性。 |
| zoneddecimal | 装入分区十进制数据,因为 binarynumerics 修饰符不包含 DECIMAL 字段类型。 此选项仅受位置 ASC 支持,使用 reclen 选项指定的固定长度记录。 半字节符号值可以是以下值之一:
数字的受支持值为 支持的区域值为
|
| 修饰符 | 描述 |
|---|---|
| chardelx | x 是单个字符串定界符。 缺省值为双引号 (")。 使用指定的字符代替双引号将字符串括起来。2 , 3 如果要显式指定双引号 (") 作为字符串定界符,您应按如下所示进行指定:单引号 (') 也可以指定为字符串定界符,如下所示:
|
| coldelx | x 是单个字符列分隔符。 缺省值为逗号 (,)。指定的字符用于代替逗号来表示 列的末尾。2, 3 |
| decplusblank | 加号字符。 使正十进制值以空格代替加号 (+) 作为前缀。缺省操作是使用加号来前缀正十进制值。 |
| decptx | x 是句点作为小数点字符的单个字符。 缺省值为句点 (.)。指定的字符用作小数点 字符的句点。2, 3 |
| delprioritychar | 定界符的当前缺省优先级为:记录定界符、字符分隔符、列分隔符。 此修饰符通过将定界符优先级还原为:字符分隔符、记录定界符、列分隔符来保护依赖于较旧优先级的现有应用程序。 语法:例如,给定以下 DEL 数据文件:
在指定了 delprioritychar 修饰符的情况下,此数据文件中将只有两行。 第二行定界符将解释为第二行的第一数据列的一部分,而第一行定界符和第三行定界符将解释为实际记录定界符。 If this modifier is 不 specified, there will be three rows in this data file, each delimited by a <row delimiter>. |
| 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 选项配合使用,那么装入实用程序不会发出警告。 如果尝试此操作,那么装入操作将失败,并返回错误代码。
- 如果指定了多个后缀为 ignore、include、missing 和 override 的修饰符,那么将按照它们列出的顺序应用这些修饰符。 在以下语句中,非标识列的隐式隐藏列的数据包含在输入数据中。 虽然所有标识列的数据(无论其隐式隐藏状态如何)都不是。
但是,更改以下语句中文件类型修饰符的顺序意味着所有隐式隐藏列(包括隐藏标识列)的数据都包含在输入数据中。 虽然未隐式隐藏的标识列的数据不是。db2 load from delfile1 of del modified by implicitlyhiddeninclude identitymissing insert into table1db2 load from delfile1 of del modified by identitymissing implicitlyhiddeninclude insert into table1
| codepage=N | usegraphiccodepage | LOAD 行为 |
|---|---|---|
| 不存在 | 不存在 | 假定文件中的所有数据都在数据库代码页中,而不是在应用程序代码页中,即使指定了 CLIENT 选项也是如此。 |
| 已存在 | 不存在 | 假定文件中的所有数据都在代码页 N 中。警告: 如果 |
| 不存在 | 已存在 | 假定文件中的字符数据都在数据库代码页中,即使指定了 CLIENT 选项也是如此。 假定图形数据都在数据库图形数据的代码页中,即使指定了 CLIENT 选项也是如此。 如果数据库代码页是单字节,那么假定所有数据都在数据库代码页中。 警告: 当装入单字节数据库时,图形数据将损坏。 |
| 已存在 | 已存在 | 假定字符数据在代码页 N 中。 假定图形数据在 N 的图形代码页中。如果 警告: 如果 |
