使用 ADMIN_CMD 过程的 IMPORT 命令

IMPORT 命令将外部文件中的数据以支持的文件格式插入到表格、层级、视图或昵称中。 LOAD 是更快的替代方法,但 LOAD 实用程序不支持在层次结构级别装入数据。

快速链接到 #f0023632__filetypemodimport

授权

  • 带有 INSERT 选项的 IMPORT 命令需要以下权限之一:
    • DATAACCESS 权限
    • DATAACCESS 对每个参与表或视图的架构的权限
    • 对每个参与表或视图的架构具有插入和选择权限
    • 对每个参与表,视图或昵称的 CONTROL 特权
    • 对每个参与表或视图的 INSERT 和 SELECT 特权
  • IMPORT 命令对现有表使用 INSERT_UPDATE 选项,需要以下权限之一:
    • DATAACCESS 权限
    • DATAACCESS 对每个参与表或视图的架构的权限
    • 对每个参与表或视图的架构具有插入、选择、更新和删除权限
    • 对每个参与表,视图或昵称的 CONTROL 特权
    • 对每个参与表或视图的插入、选择、更新和删除权限
  • 对使用 REPLACEREPLACE_CREATE 选项的现有表执行 IMPORT 命令需要以下权限之一:
    • DATAACCESS 权限
    • DATAACCESS 对每个参与表或视图的架构的权限
    • 对每个参与表或视图的架构具有插入、选择和删除权限
    • 该表或视图上的 CONTROL 特权
    • 对表或视图的 INSERT , SELECT 和 DELETE 特权
  • 使用 CREATEREPLACE_CREATE 选项的新表的 IMPORT 命令需要以下权限之一:
    • DBADM 权限
    • CREATETAB数据库权限和USE表空间权限,以及以下权限之一:
      • 对数据库的 IMPLICIT_SCHEMA 权限(如果表的隐式或显式模式名称不存在)。
      • 如果表的架构名称引用现有架构,则对架构具有 CREATEIN 特权或 SCHEMAADM 权限
  • 向不存在的层级发送 IMPORT 命令,使用 CREATEREPLACE_CREATE 选项,需要以下权限之一:
    • DBADM 权限
    • 对数据库的 CREATETAB 权限和对表空间的 USE 特权,以及下列其中一项:
      • 如果表的架构名称不存在,则数据库的隐式架构权限。
      • 如果表的模式存在,则具有CREATEIN特权或SCHEMAADM权限
      • 如果整个层次结构中的 REPLACE_CREATE 选项被使用,则每个子表中的CONTROL权限。
  • 对使用 REPLACE 选项的现有层次结构的 IMPORT 命令需要以下权限之一:
    • DATAACCESS 权限
    • 数据访问权限,可访问层次结构中每个子表的架构
    • 在层级结构中的每个子表上都有控制权限
  • 要将数据导入到保护列的表格中,会话授权ID必须具有LBAC凭证,允许对表格中所有受保护列进行写入操作。 否则,导入失败,并返回错误(SQLSTATE 42512)。
  • 要将数据导入到保护行的表格中,会话授权ID必须持有符合以下条件的LBAC凭证:
    • 这是保护桌子的安全政策的一部分。
    • 它被授予会话授权ID,用于写入访问。
    要插入的行上的标号、用户的 LBAC 凭证、安全策略定义和 LBAC 规则共同确定行上的标号。
  • 对于具有受保护行的表,如果指定了 REPLACEREPLACE_CREATE 选项,那么会话授权标识必须有权删除该表。
  • 要将数据导入昵称中,会话授权标识必须具有以传递方式访问和使用指定数据源的特权。
  • 如果表启用了行访问控制,则该表上的 IMPORT REPLACE 需要具有删除表的能力。 具体来说,您必须拥有 CONTROL 权限、SCHEMAADM 权限或 DBADM 权限

需要的连接

数据库。 对来自 Linux, UNIX 或 Windows 客户机的 Linux®, UNIX 或 Windows 数据库服务器的实用程序访问必须是通过引擎的直接连接,而不是通过 Db2 Connect 网关或循环环境的直接连接。

命令语法

Read syntax diagramSkip visual syntax diagramIMPORT FROMfilenameOFfiletype LOBS FROM,lob-pathXML FROM,xml-pathMODIFIED BYfiletype-modMETHODL(,column-startcolumn-end)NULL INDICATORS(,null-indicator-list)N(,column-name)P(,column-position)XMLPARSESTRIPPRESERVEWHITESPACEXMLVALIDATE USINGXDSDEFAULTschema-sqlidIgnore and Map parametersSCHEMAschema-sqlidSCHEMALOCATION HINTSALLOW NO ACCESSALLOW WRITE ACCESSCOMMITCOUNTnAUTOMATICRESTARTCOUNTSKIPCOUNTnROWCOUNTnWARNINGCOUNTnNOTIMEOUTMESSAGES ON SERVERINSERTINSERT_UPDATEREPLACEREPLACE_CREATEINTOtable-name(,insert-column)hierarchy descriptionCREATEINTOtable-name(,insert-column)hierarchy descriptionAS ROOT TABLEUNDERsub-table-nametblspace-specs
Ignore and Map parameters
Read syntax diagramSkip visual syntax diagramIGNORE(,schema-sqlid)MAP(,(schema-sqlid,schema-sqlid))
hierarchy description
Read syntax diagramSkip visual syntax diagramALL TABLESsub-table-listINHIERARCHY STARTINGsub-table-nametraversal-order-list
sub-table-list
Read syntax diagramSkip visual syntax diagram( ,sub-table-name(,insert-column) )
traversal-order-list
Read syntax diagramSkip visual syntax diagram( ,sub-table-name )
tblspace-specs
Read syntax diagramSkip visual syntax diagramINtablespace-nameINDEX INtablespace-nameLONG INtablespace-name

命令参数

FROM文件名
指定包含要导入的数据的文件的名称。 此路径必须完全合格,且文件必须在数据库服务器上存在。

如果启用了 DB2_LOAD_RESTRICTED_IO_PATH ,则文件必须存在于受限路径中。

OF文件类型
指定输入文件中数据的格式:
  • ASC (非定界 ASCII 格式)
  • DEL (分隔ASCII格式),被各种数据库管理器和文件管理器程序使用
  • IXF (集成交换格式, PC 版本) 是由 Db2®独占使用的二进制格式。
LOBS FROM lob-path
指定用于存储 LOB 文件的一个或多个标准路径。 这些路径必须存在于数据库服务器协调程序分区上。 LOB数据文件的名称存储在主数据文件(ASC、DEL或IXF)中,加载到LOB列的列中。 可以指定的最大路径数为 999。 此参数隐式激活 LOBSINFILE 行为。

当您导入到昵称时,此参数无效。

如果启用了 DB2_LOAD_RESTRICTED_IO_PATH ,则Lob路径必须存在于受限路径中。

XML FROM xml-path
指定一个或多个包含 XML 文件的路径。

如果启用了 DB2_LOAD_RESTRICTED_IO_PATH ,则xml路径必须存在于受限路径中。

修改者 :filetype-mod
指定文件类型修饰符选项。 查看 #f0023632__filetypemodimport
METHOD
L
指定要从中导入数据的开始和结束列号。 列号是从一行数据开始的字节偏移量。 从 1 开始编号。
注: 此方法只能与 ASC 文件配合使用,并且是该文件类型的唯一有效选项。
N
指定要导入的数据文件中列的名称。 这些列名的大小写必须与系统目录中相应名称的大小写匹配。 每个非空表列在 METHOD N 列表中都有一个对应的条目。 例如,给定的数据字段 F1, F2, F3, F4, F5和 F6以及表列 C1 INT , C2 INT NOT NULL , C3 INT NOT NULL 和 C4 INT ,方法 N (F2, F1, F4, F3) 是有效请求,而方法 N (F2, F1) 无效。
注: 此方法只能与 IXF 文件配合使用。
指定要导入的输入数据字段的字段号 (从 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 配合使用,并且是 DEL 文件类型的唯一有效方法。
对于方法 P 指定的每个字段,您需要在操作语句中定义相应的列,除非所有列都已解释或将装入前 x 列,如以下示例中所示:
  db2 load from datafile1.del of del method P(1, 3, 4)
      replace into table1 (c1, c3, c4)
NULL INDICATORS null-indicator-list
仅当指定了 METHOD L 参数时,才能使用此选项。 即,输入文件是 ASC 文件。 空值指示符列表是一个以逗号分隔的正整数列表,用于指定每个空值指示符字段的列号。 列号是从一行数据开始的空指示符字段的字节偏移量。 在 METHOD L 参数中定义的每个数据字段,需要在空指示符列表中输入一个条目。 列数为零表示相应的数据字段始终包含数据。

NULL 指示符列中的值 Y 指定列数据为 NULL。 NULL指示列中任何非 Y 的字符都表示该列数据不为NULL,并且导入由 METHOD L 选项指定的列数据。

使用 MODIFIED BY 选项和 nullindchar 文件类型修改器可以更改空值指示符。

XMLPARSE
指定如何解析 XML 文档。 如果未指定此选项,那么 XML 文档的解析行为由 CURRENT IMPLICIT XMLPARSE OPTION 专用寄存器的值确定。
删除空白
指定在解析 XML 文档时除去空格。
保留空白
指定在解析 XML 文档时不除去空格。
XMLVALIDATE
指定在适用时针对模式验证 XML 文档。
USING XDS
将针对 XML 模式验证 XML 文档,该模式由主数据文件中的 XML 数据说明符 (XDS) 标识。 默认情况下,如果 XMLVALIDATE 选项与 USING XDS 子句一起调用,则用于执行验证的架构由XDS的SCH属性确定。 如果在 XDS 中不存在 SCH 属性,那么不会发生模式验证,除非 DEFAULT 子句指定了缺省模式。

DEFAULTIGNOREMAP 子句可用于修改模式确定行为。 这三个可选子句直接应用于 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属性将被忽略。
请参阅以下部分中的 XMLVALIDATE 选项的示例。
DEFAULT schema-sqlid
仅当指定了 USING XDS 参数时,才能使用此选项。 当导入的XML文档的XML数据说明符(XDS)不包含用于标识XML模式的SCH属性时,通过 DEFAULT 子句指定的模式将用于验证。

DEFAULT 子句优先于 IGNOREMAP 子句。 如果 XDS 满足 DEFAULT 子句,那么将忽略 IGNOREMAP 规范。

IGNORE schema-sqlid
仅当指定了 USING XDS 参数时,才能使用此选项。 IGNORE 子句指定一个或多个模式的列表以忽略它们是否由 SCH 属性标识。 如果导入的 XML 文档的 XML 数据说明符中存在 SCH 属性,且 SCH 属性标识的模式包含在要忽略的模式列表中,则不会对导入的 XML 文档进行模式验证。

如果在 IGNORE 子句中指定了模式,那么它也不能存在于 MAP 子句中模式对的左侧。

IGNORE 子句仅适用于 XDS。 如果 IGNORE 子句指定了由 MAP 子句映射的架构,则该架构不会在以后被忽略。

MAP schema-sqlid
仅当指定了 USING XDS 参数时,才能使用此选项。 使用 MAP 子句指定替代方案,以替代每个导入的XML文档中XML数据说明符(XDS)的SCH属性指定的方案。 MAP 子句指定一个或多个模式对的列表,其中每一个人对表示一个模式到另一个模式的映射。 该对中的第一个模式表示由 XDS 中的 SCH 属性引用的模式。 对中的第二个模式表示可用于执行模式验证的模式。

如果模式在 MAP 子句中的模式对左侧存在,那么也不能在 IGNORE 子句中指定该模式。

应用模式对映射后,结果为最终结果。 因此,映射操作是非传递性的,所选择的模式不会应用于其他模式对映射。

不能多次映射模式,这意味着它不能出现在多个对的左侧。

ALLOW NO ACCESS
以脱机方式运行导入。 在插入任何行之前,将获取对目标表的互斥 (X) 锁定。 此参数可防止并发应用程序访问表数据。 这是缺省导入行为。
ALLOW WRITE ACCESS
以联机方式运行导入。 插入第一行时,将获取对目标表的意向互斥 (IX) 锁定。 此参数允许并发读写访问表数据。 联机方式与 REPLACECREATEREPLACE_CREATE 导入选项不兼容。 缓冲插入不支持在线模式。 导入操作会定期提交插入的数据,以防止锁升级到表锁,并避免活动日志空间耗尽。 即使未使用 COMMITCOUNT 选项,也会执行这些提交操作。 在每次落实期间,导入将丢失其 IX 表锁定,并将尝试在落实后重新获取该表锁定。 导入到昵称时需要此参数,并且必须使用有效数字指定 COMMITCOUNT (AUTOMATIC 未被视为有效选项)。
提交计数n | 自动
在导入每个 n 条记录后执行 COMMIT。 当指定了数字 n 时,导入将在导入每个 n 条记录之后执行 COMMIT。 使用复合插入时,用户指定的落实频率 n 将向上舍入为复合计数值的第一个整数倍。 如果指定了 AUTOMATIC ,那么在内部导入将确定何时需要执行落实。 该实用程序承诺出于以下两个原因之一:
  • 为了避免活动日志空间耗尽。
  • 为了避免从行级别升级到表级别。
如果指定了 ALLOW WRITE ACCESS 选项,而没有指定 COMMITCOUNT 选项,导入实用程序将像指定了 COMMITCOUNT AUTOMATIC 一样进行提交。
导入操作避免活动日志空间耗尽的能力受 Db2 注册表变量 DB2_FORCE_APP_ON_MAX_LOG影响:
  • 如果将 DB2_FORCE_APP_ON_MAX_LOG 设置为 FALSE 并指定 COMMITCOUNT AUTOMATIC 命令选项,导入实用程序将能够自动避免活动日志空间耗尽。
  • 如果将 DB2_FORCE_APP_ON_MAX_LOG 设置为 FALSE 并指定 COMMITCOUNT n 命令选项,则在插入或更新记录时,如果遇到 SQL0964C (事务日志已满),导入实用程序将尝试解决日志已满的情况。 它执行无条件提交,然后重新尝试插入或更新记录。 如果此操作无法解决问题(当日志已满是由于数据库中的其他活动导致时),则 IMPORT 命令会按预期失败,但提交的数据行数不能是 COMMITCOUNT n值的倍数。 要避免处理在重试导入操作时已落实的行,请使用 RESTARTCOUNTSKIPCOUNT 命令参数。
  • 如果将 DB2_FORCE_APP_ON_MAX_LOG 设置为 TRUE (默认设置),则在插入或更新记录时遇到 SQL0964C时,导入操作将失败。 无论您是指定 COMMITCOUNT AUTOMATIC 还是 COMMITCOUNT n,都可能发生此情况。

    将强制应用程序关闭数据库,并回滚当前工作单元。 要避免处理在重试导入操作时已落实的行,请使用 RESTARTCOUNTSKIPCOUNT 命令参数。

重启次数
指定要在记录 n+ 1 处启动导入操作。 将跳过前 n 条记录。 此选项的功能相当于 SKIPCOUNTRESTARTCOUNTSKIPCOUNT 互斥。
跳过计数n
指定要在记录 n+ 1 处启动导入操作。 将跳过前 n 条记录。 此选项的功能相当于 RESTARTCOUNTSKIPCOUNTRESTARTCOUNT 互斥。
ROWCOUNT n
指定要导入 (插入或更新) 的文件中物理记录的编号 n 。 允许用户从文件中仅导入 n 行,从 SKIPCOUNTRESTARTCOUNT 选项所确定的记录开始。 如果指定了 SKIPCOUNTRESTARTCOUNT 选项,则导入前n行。 如果指定了 SKIPCOUNT mRESTARTCOUNT m ,那么将导入到 m+n 的行 m+ 1。 使用复合插入时,用户指定的 ROWCOUNT n 将向上舍入为复合计数值的第一个整数倍。
WARNINGCOUNT n
在出现 n 个警告后停止导入操作。 如果预期没有警告,但需要验证是否使用了正确的文件和表,请设置此参数。 如果导入文件或目标表指定错误,导入实用程序会为尝试导入的每一行生成一个警告,从而导致导入失败。 如果 n 为零,或者未指定此选项,则无论发出多少警告,导入操作都会继续。
NOTIMEOUT
指定导入实用程序在等待锁定时不会超时。 此选项将取代 locktimeout 数据库配置参数。 其他应用程序不受影响。
服务器上的消息
指定要保存 IMPORT 命令在服务器上创建的消息文件。 返回的结果集包括以下两列:MSG_RETRIEVAL,这是检索此操作期间出现的所有警告和错误消息所需的SQL语句;MSG_REMOVAL,这是清理消息所需的SQL语句。

如果未指定此子句,那么 ADMIN_CMD 过程返回到调用者时将删除消息文件。 结果集中的 MSG_RETRIEVAL 和 MSG_REMOVAL 列包含 null 值。

注意 :无论是否包含该条款,被保护的用户ID或实例所有者的主要组都必须有权在 DB2_UTIL_MSGPATH 注册表变量指定的目录下创建文件,以及导出数据的目录。
INSERT
将导入的数据添加到表中,而不更改现有表数据。
INSERT_UPDATE
将导入的数据行添加到目标表,或者使用匹配的主键更新 (目标表的) 现有行。
REPLACE
通过截断数据对象从表中删除所有现有数据,并插入导入的数据。 不会更改表定义和索引定义。 仅当表存在时,才能使用此选项。 如果在层次结构之间移动数据时使用此选项,那么只能替换整个层次结构 (而不是单个子表) 的数据。

当您导入到昵称时,此参数无效。

此选项不接受CREATE TABLE语句的NOT LOGGED INITIALLY (NLI)子句或ALTER TABLE语句的ACTIVE NOT LOGGED INITIALLY子句。

此选项不能用于将数据导入到系统周期时态表中。

如果在调用 NLI 子句的 CREATE TABLE 或 ALTER TABLE 语句的同一事务中执行带有 REPLACE 选项的导入,则导入将不接受 NLI 子句。 所有插入内容都会被记录。

解决方法1
使用DELETE语句删除表中的内容,然后使用INSERT语句调用导入。
变通方案 2
删除表格并重新创建,然后使用INSERT语句调用导入。
REPLACE_CREATE
注意: REPLACE_CREATE 参数已弃用,可在未来版本中删除。 更多信息,请参阅 “导入”命令选项。CREATE和REPLACE_CREATE命令已弃用

如果表存在,请通过截断数据对象从表中删除所有现有数据,并在不更改表定义或索引定义的情况下插入导入的数据。

如果表不存在,则在数据库的代码页中创建表和索引定义以及行内容。 请参阅“进口表重新创建”部分,了解限制列表。

此选项只能与 IXF 文件配合使用。 如果在层次结构之间移动数据时使用此选项,那么只能替换整个层次结构 (而不是单个子表) 的数据。

当您导入到昵称时,此参数无效。

INTO table-name
指定要将数据导入到其中的数据库表。 此表不能是系统表, 已创建的临时表,已声明的临时表或摘要表。

可以使用 INSERTINSERT_UPDATEREPLACE 的别名,除非是在早期服务器上,此时可以使用完全限定或非限定的表名。 限定表名的格式为: schema.tablename该方案是创建表格的用户名。

如果数据库表包含隐式隐藏列,那么必须指定导入操作中是否包含隐藏列的数据。 使用下列其中一种方法来指示是否包含隐藏列的数据:
  • 使用 insert-column 来显式指定要在其中插入数据的列。
    db2 import from delfile1 of del
       insert into table1 (c1, c2, c3,...)
  • 使用某个隐藏列文件类型修饰符:指定 implicitlyhiddeninclude(如果输入文件包含隐藏列的数据)或 implicitlyhiddenmissing(如果输入文件未包含隐藏列的数据)。
    db2 import from delfile1 of del modified by implicitlyhiddeninclude
       insert into table1 
  • 当数据移动实用程序迂到具有隐式隐藏列的表时,请在客户机端使用 DB2_DMU_DEFAULT 注册表变量来设置缺省行为。
    db2set DB2_DMU_DEFAULT=IMPLICITLYHIDDENINCLUDE
    db2 import from delfile1 of del insert into table1 
insert-column
指定要在其中插入数据的表或视图中的列的名称。
所有表
仅用于层次结构的隐式关键字。 导入层次结构时,缺省值是导入按遍历顺序指定的所有表。
子表列表
对于带有 INSERTINSERT_UPDATE 选项的类型化表格,子表名称列表用于指示要导入数据的子表。
Hierarchy
指定要导入分层数据。
STARTING sub-table-name
仅用于层次结构的关键字,请求从 sub-table-name开始的缺省顺序。 对于PC/IXF文件,默认顺序是输入文件中存储的顺序。 缺省顺序是 PC/IXF 文件格式的唯一有效顺序。
遍历顺序列表
对于带有 INSERTINSERT_UPDATEREPLACE 选项的类型化表,子表名称列表用于指示导入子表在层次结构中的遍历顺序。
CREATE
注意: CREATE 参数已弃用,可在未来版本中删除。 更多信息,请参阅 “导入”命令选项 CREATEREPLACE_CREATE 已被弃用

在数据库的代码页中创建表定义和行内容。 如果数据是从 Db2 表、子表或层次结构中导出的,则将创建索引。 如果此选项在层级结构中运行,并且数据是从 Db2 导出的,则还会创建一个类型层级结构。 此选项只能与 IXF 文件配合使用。

当您导入到昵称时,此参数无效。

注意 :如果数据是从MVS主机数据库中导出的,并且其中包含LONGVAR字段,而该字段的长度(根据页面大小计算)超过254,则 CREATE 可能会因为行太长而失败。 请参阅 导入的表重新创建 以获取限制列表。 在这种情况下,可以手动创建表格,并调用 IMPORTINSERT ,或者使用 LOAD 命令。
作为根表
创建一个或多个子表,作为独立的表层级。
UNDER子表名
指定用于创建一个或多个子表的父表。
IN tablespace-name
标识创建表格所在的表格空间。 表空间必须存在,并且必须是 REGULAR 表空间或 LARGE 表空间。 如果未指定其他表空间,那么所有表部件都将存储在此表空间中。 如果没有指定此条款,则会在授权ID创建的表空间中创建表。 如果找不到任何表,那么会将该表放入缺省表空间 USERSPACE1中。 如果删除 USERSPACE1 ,则创建表失败。
INDEX IN tablespace-name
标识表中创建任何索引的表空间。 仅当在 IN 子句中指定的主表空间为DMS表空间时,才允许使用此选项。 指定的表空间必须存在,并且必须是 REGULAR 或 LARGE DMS 表空间。
注意 :只有在创建表时才能指定包含索引的表空间。
LONG IN tablespace-name
标识存储任何长列(LONG VARCHAR、LONG VARGRAPHIC、LOB数据类型或具有这些类型中任何一种作为源类型的不同类型)值的表空间。 仅当 IN 子句中指定的主表空间是 DMS 表空间时,才允许使用此选项。 表空间必须存在,并且必须是 LARGE DMS 表空间。

示例

以下示例显示如何将信息从文件 myfile.ixf 导入到 SAMPLE 数据库中的 STAFF 表。
CALL SYSPROC.ADMIN_CMD
   ('IMPORT FROM /home/userid/data/myfile.ixf 
   OF IXF MESSAGES ON SERVER INSERT INTO STAFF')

使用说明

IMPORT 命令中使用的任何路径都必须是服务器的协调程序数据库分区上的有效标准路径。

如果指定了 ALLOW WRITE ACCESSCOMMITCOUNT 选项,那么 IMPORT 实用程序将执行落实。 在2类连接的情况下,此选项会导致ADMIN_CMD程序返回 SQL30090N ,原因代码为1。

如果要为来自 ADMIN_CMD 过程的结果集的列分配的值大于该列的数据类型的最大值,那么将分配该数据类型的最大值并返回警告消息 SQL1155W。

在启动导入操作之前,请确保完成所有表操作并释放所有锁定。 关闭所有以 HOLD 打开的游标后,通过发出 COMMIT 命令或 ROLLBACK 命令即可。

导入实用程序使用SQL INSERT语句向目标表添加行。 该实用程序针对输入文件中的每行数据发出一个 INSERT 语句。 如果 INSERT 语句失败,那么会产生以下两个操作之一:
  • 如果后续 INSERT 语句可能成功,那么会将一条警告消息写入消息文件,然后继续处理。
  • 如果后续 INSERT 语句可能失败,并且可能发生数据库损坏,那么会将错误消息写入消息文件并处理停止。

REPLACEREPLACE_CREATE 操作期间删除旧行之后,该实用程序将执行自动 COMMIT。 因此,如果系统发生故障,或者应用程序在表对象被截断后中断 数据库管理器 ,那么所有旧数据都将丢失。 在使用这些选项之前,请确保不再需要旧数据。

如果在 CREATEREPLACEREPLACE_CREATE 操作期间日志变满,那么该实用程序将对插入的记录执行自动 COMMIT。 如果系统发生故障,或者应用程序在自动 COMMIT 后中断了 数据库管理器 ,那么带有部分数据的表将保留在数据库中。 使用 REPLACEREPLACE_CREATE 选项来重新运行整个导入操作,或者使用 INSERT 并将 RESTARTCOUNT 参数设置为已成功导入的行数。

在 IMPORT 任务结束时,将始终落实来自 IMPORT 命令的更新。 IMPORT 命令还可以在其执行期间执行自动落实,以减小锁定列表和活动日志空间的大小。 如果在 IMPORT 处理期间活动日志已满,那么 IMPORT 命令将回滚。
  • 缺省情况下,不会对 INSERTINSERT_UPDATE 选项执行自动落实。 但是,如果 COMMITCOUNT 参数不为零,那么将执行这些操作。
  • 如果满足下列任何条件,那么脱机导入不会执行自动落实:
    • 目标是视图,而不是表
    • 使用复合插入
    • 使用缓冲插入
  • 缺省情况下,联机导入执行自动落实以释放活动日志空间和锁定列表。 仅当指定了 COMMITCOUNT 值 0 时,才会执行自动落实。

每当 IMPORT 实用程序执行 COMMIT 时,都会将两条消息写入消息文件: 一条消息指示要落实的记录数,另一条消息在 COMMIT 成功后写入。 在失败后重新启动导入操作时,指定要跳过的记录数 (根据上次成功的 COMMIT 确定)。

导入实用程序可以接受存在轻微不兼容问题的输入数据(例如,字符数据可以通过填充或截断来导入,数字数据可以通过不同的数字数据类型来导入),但不接受存在重大不兼容问题的数据。

如果对象表具有除自身以外的任何从属项,那么不能 REPLACEREPLACE_CREATE 对象表,如果对象表的基本表具有任何从属项 (包括自身) ,那么不能或对象表。 要替换此类表或视图,请执行以下操作:
  1. 删除表为父代的所有外键。
  2. 运行 IMPORT 实用程序。
  3. 更改表以重新创建外键。

如果在重新创建外键时发生错误,请修改数据以保持引用完整性。

从 PC/IXF 文件重新创建表时,不会保留引用约束和外键定义。 (如果之前使用 SELECT * 导出了数据, 则保留主键定义。)

导入到远程数据库需要服务器上有足够的磁盘空间用于输入数据文件,输出消息文件的副本以及数据库大小的潜在增长。

如果对远程数据库运行导入操作,并且输出消息文件很长 (超过 60 KB) ,那么在客户机上返回给用户的消息文件可能缺少来自导入操作中间的消息。 始终保留前 30 KB 的消息信息和后 30 KB 的消息信息。

如果 PC/IXF 文件位于硬盘驱动器上而不是软盘上,那么将 PC/IXF 文件导入到远程数据库的速度要快得多。

对于使用基于表达式的键定义了索引的表,不能将 IMPORT CREATE 选项与 PC/IXF 文件格式配合使用。

数据库表或层次结构必须存在,然后才能导入 ASCDEL 文件格式的数据; 但是,如果该表尚不存在,那么 IMPORT CREATEIMPORT REPLACE_CREATE 会在从 PC/IXF 文件导入数据时创建该表。 对于类型表, IMPORT CREATE 还可以创建类型层次结构和表层次结构。

PC/IXF导入可用于在数据库之间移动数据(包括分层数据)。 如果将包含行分隔符的字符数据导出到定界 ASCII (DEL) 文件并由文本传输程序处理,那么包含行分隔符的字段将缩小或扩展。 如果可以从同一客户机访问源数据库和目标数据库,那么不需要执行文件复制步骤。

假定 ASC 和 DEL 文件中的数据位于执行导入的客户机应用程序的代码页中。 在导入不同代码页中的数据时,建议使用允许不同代码页的 PC/IXF 文件。 如果 PC/IXF 文件和 IMPORT 实用程序位于同一代码页中,那么将对常规应用程序进行处理。 如果两者不同,并且指定了 FORCEIN 选项,那么 IMPORT 实用程序假定 PC/IXF 文件中的数据与执行导入的应用程序具有相同的代码页。 即使存在两个代码页的转换表,也会发生此情况。 如果两者不同,那么未指定 FORCEIN 选项,并且存在转换表,那么 PC/IXF 文件中的所有数据都将从文件代码页转换为应用程序代码页。 如果两者不同, FORCEIN 选项未指定,且没有转换表,导入操作将失败。 此选项仅适用于 AIX®上 Db2上的PC/IXF文件。

对于 8 KB 页面上接近 1012 列的限制的表对象,导入 PC/IXF 数据文件可能会导致 Db2 返回错误,因为超过了 SQL 语句的最大大小。 仅当列类型为 CHAR , VARCHAR 或 CLOB 时,才会发生此情况。 此限制不适用于导入 DELASC 文件。 如果正在使用 PC/IXF 文件来创建新表,那么替代方法是使用 db2look 来转储创建该表的 DDL 语句,然后通过 CLP 发出该语句。

Db2 Connect 可用于将数据导入到 DRDA 服务器,例如 Db2 for z/OS®Db2 for VM and VSE 以及 Db2 for OS/400®。 仅支持 PC/IXF 导入 (INSERT 选项)。 还支持 RESTARTCOUNT 参数,但不支持 COMMITCOUNT 参数。

CREATE 选项与类型表配合使用时,请创建 PC/IXF 文件中定义的每个子表; 不能更改子表定义。 将 CREATE 以外的选项与类型表配合使用时,遍历顺序列表允许您指定遍历顺序; 因此,遍历顺序列表必须与导出操作期间使用的遍历顺序列表相匹配。 对于PC/IXF文件格式,只需指定目标子表名称,并使用文件中存储的遍历顺序。

可以使用 IMPORT 实用程序来恢复先前导出到 PC/IXF 文件的表。 该表将返回到导出时所处的状态。

无法将数据导入到系统表, 已创建的临时表,已声明的临时表或摘要表。

不能通过 IMPORT 实用程序创建视图。

支持将其各个部件从 Windows 系统复制到 AIX 系统的多部分 PC/IXF 文件导入。 只能在 IMPORT 命令中指定第一个文件的名称。 例如,IMPORT FROM data.ixf OF IXF INSERT INTO TABLE1。 文件 data.002 等可以与 data.ixf 位于同一目录下。

在 Windows 操作系统上:
  • 不支持导入逻辑分割的 PC/IXF 文件。
  • 不支持导入格式错误的 PC/IXF 文件。

内部格式的安全标号可能包含换行符。 如果您使用DEL文件格式导入文件,这些换行符可能会被误认为是分隔符。 如果存在此问题,请通过在 IMPORT 命令中指定 delprioritychar 文件类型修饰符,将较旧的缺省优先级用于定界符。

如果数据库表包含隐式隐藏列,那么必须指定导入操作中是否包含隐藏列的数据。

IMPORT 实用程序与表中的列数和数据文件中的字段数不匹配。 该实用程序检查数据文件中是否有足够的数据,如果数据文件中的某一行没有包含足够的数据列,则如果相应的表列没有数据被定义为NOT NULL,则该行将被拒绝并显示警告消息;如果相应的表列被定义为NULL,则该行将被成功插入,且不显示警告消息。 另一方面,如果某行包含的列数高于所需列数,那么将处理足够数量的列,同时省略其余的数据列,并且不会给出警告消息。

联合注意事项

使用 IMPORT 命令和 INSERTUPDATEINSERT_UPDATE 命令参数时,必须确保对参与昵称具有 CONTROL 特权。 您必须确保在导入操作时使用的昵称已经存在。 您还可以了解一些限制,如 IMPORT 命令参数部分所示。

某些数据源 (例如 ODBC) 不支持导入到昵称中。

按列组织的表

  • IMPORT 命令继承与 按列组织的 表相关的所有 INSERT , UPDATE 或 DELETE 语句限制。
  • IMPORT 命令的 CREATE INTO 参数无法创建 按列组织的 表。
  • 针对 按列组织的 表的导入操作使用 CS 隔离级别 (插入操作需要此级别) ,而不是缺省 RS 隔离级别 (在将导入包绑定到数据库时设置)。
  • 不能使用通过从带有 CREATE 参数或 IMPORT 命令的 REPLACE_CREATE 参数的 按列组织 表导出数据而创建的 IXF 文件。

结果集信息

命令执行状态将在 CALL 语句产生的 SQLCA 中返回。 如果执行成功,那么该命令将返回结果集中的其他信息,如下所示:
表 1. IMPORT 命令返回的结果集
列名 数据类型 描述
ROWS_READ BIGINT 导入期间从文件读取的记录数。
ROWS_SKIPPED BIGINT 在插入或更新开始之前跳过的记录数。
ROWS_INSERTED BIGINT 插入到目标表中的行数。
ROWS_UPDATED BIGINT 目标表中根据导入记录(表中存在主键值的记录)信息更新的行数。
ROWS_REJECTED BIGINT 无法导入的记录数。
ROWS_COMMITTED BIGINT 成功导入并落实到数据库的记录数。
MSG_RETRIEVAL VARCHAR (512) 用于检索此实用程序创建的消息的 SQL 语句。 例如:
SELECT SQLCODE, MSG
   FROM TABLE (SYSPROC.ADMIN_GET_MSGS
   ('1203498_txu')) AS MSG
MSG_REMOVAL VARCHAR (512) 用于清除此实用程序创建的消息的 SQL 语句。 例如:
CALL SYSPROC.ADMIN_REMOVE_MSGS
   ('1203498_txu')

IMPORT 实用程序的文件类型修饰符

表 2. 导入实用程序的有效文件类型修饰符: 所有文件格式
修饰符 描述
化合物= x x 是介于 1 与 100 之间 (含 100) 的数字。 使用非原子复合 SQL 来插入数据,并且每次都将尝试 x 语句。

如果指定了此修饰符,并且事务日志不够大,那么导入操作将失败。 事务日志必须足够大,以容纳 COMMITCOUNT指定的行数或数据文件中的行数 (如果未指定 COMMITCOUNT )。 因此,建议指定 COMMITCOUNT 选项以避免事务日志溢出。

此修饰符与以下内容不兼容:
  • INSERT_UPDATE mode
  • 分层表
  • 使用随机 (按生成) 方法的随机分布表
  • 以下修饰符: usedefaultsidentitymissingidentityignoregeneratedmissinggeneratedignore
通用忽略 这个修饰符告知导入实用程序,数据文件中存在所有生成列的数据,但可以忽略。 此操作的结果是,生成的列的所有值均由实用程序生成。 此修饰符不能与 generatedmissing 修饰符配合使用。

使用随机 (按生成) 方法的随机分布表具有内部生成的名为 RANDOM_DISTRIBUTION_KEY的列。 此修饰符不适用于该列,仅适用于表中的其他生成列。 除非在列列表中明确引用,否则将重新生成 RANDOM_DISTRIBUTION_KEY 的值。

生成缺失 如果指定了此修饰符,那么实用程序假定输入数据文件不包含生成的列 (甚至不包含 NULL) 的数据,因此将为每行生成一个值。 此修饰符不能与 generatedignore 修饰符配合使用。

使用随机 (按生成) 方法的随机分布表具有内部生成的名为 RANDOM_DISTRIBUTION_KEY的列。 此修饰符不适用于该列,仅适用于表中的其他生成列。 除非在列列表中明确引用,否则将重新生成 RANDOM_DISTRIBUTION_KEY 的值。

标识忽略 此修饰符告知导入实用程序,数据文件中存在身份列的数据,但可以忽略。 这将导致实用程序生成所有身份值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 标识列,行为将相同。 这意味着对于 GENERATED ALWAYS 列,不会拒绝任何行。 此修饰符不能与 identitymissing 修饰符配合使用。
标识缺失 如果指定了此修饰符,那么实用程序将假定输入数据文件不包含标识列 (甚至不包含 NULL) 的数据,因此将为每行生成一个值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 标识列,行为将相同。 此修饰符不能与 identityignore 修饰符配合使用。
implicitlyhiddeninclude 如果指定了此修饰符,那么实用程序将假定输入数据文件包含隐式隐藏列的数据,并且还将导入此数据。 此修饰符不能与 implicitlyhiddenmissing 修饰符配合使用。 请参阅 注: 部分,以获取有关指定多个修饰符时的优先顺序的信息。

此修饰符不适用于使用随机 (按生成) 方法的随机分布表的隐藏 RANDOM_DISTRIBUTION_KEY 列。 仅当列列表中明确引用了该列时,才会从输入数据文件中读取该列的值。

implicitlyhiddenmissing 如果指定了此修饰符,那么实用程序将假定输入数据文件不包含隐式隐藏列的数据,并且该实用程序将为这些隐藏列生成值。 此修饰符不能与 implicitlyhiddeninclude 修饰符配合使用。 请参阅 注: 部分,以获取有关指定多个修饰符时的优先顺序的信息。

此修饰符不适用于使用随机 (按生成) 方法的随机分布表的隐藏 RANDOM_DISTRIBUTION_KEY 列。 仅当列列表中明确引用了该列时,才会从输入数据文件中读取该列的值。

洛布辛文件 lob-path 指定包含 LOB 数据的文件的路径。

每个路径包含至少一个文件,该文件包含数据文件中的 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 字节。

LOBS FROM 子句指定使用 lobsinfile 修饰符时 LOB 文件所在的位置。 LOBS FROM 子句将隐式激活 LOBSINFILE 行为。 LOBS FROM 子句将用于在导入数据时搜索 LOB 文件的路径列表传达给 IMPORT 实用程序。

要指示空 LOB,请输入大小为 -1。 如果将大小指定为 0,那么它被视为长度为 0 的 LOB。 对于长度为 -1 的空 LOBS,将忽略偏移量和文件名。 例如,空LOB的LLS可能是 db2exp.001.7.-1/。

无类型标识 仅当导入到单个子表时才有效。 典型用法是从常规表中导出数据,然后调用导入操作(通过使用此修饰符)将数据转换为单个子表。
节点故障 如果未显式指定目标表列的源列,并且该表列不可为空,那么不会装入缺省值。 如果没有此选项,那么如果未显式指定其中一个目标表列的源列,那么将发生下列其中一个情况:
  • 如果可以为列指定缺省值,那么将装入缺省值
  • 如果该列可空,并且无法为该列指定缺省值,那么将装入 NULL
  • 如果列不可为空,并且无法指定缺省值,那么将返回错误,并且实用程序将停止处理。
NOROWWARNINGS 禁止有关被拒绝行的所有警告。
periodignore 此修饰符告知导入实用程序,数据文件中存在期间列的数据,但可以忽略。 当指定此修饰符时,所有周期列值都由实用程序生成。 此修饰符不能与 periodmissing 修饰符配合使用。
periodmissing 如果指定了此修饰符,那么实用程序假定输入数据文件不包含周期列的数据。 当指定此修饰符时,所有周期列值都由实用程序生成。 此修饰符不能与 periodignore 修饰符配合使用。
rowchangetimestampignore 此修饰符告知导入实用程序,数据文件中存在行更改时间戳列的数据,但可以忽略。 这将导致实用程序生成所有 ROW CHANGE TIMESTAMP。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 列,行为将相同。 这意味着对于 GENERATED ALWAYS 列,不会拒绝任何行。 此修饰符不能与 rowchangetimestampmissing 修饰符配合使用。
rowchangetimestampmissing 如果指定了此修饰符,那么实用程序将假定输入数据文件不包含行更改时间戳记列 (甚至不包含 NULL) 的数据,因此将为每行生成一个值。 对于 GENERATED ALWAYS 和 GENERATED BY DEFAULT 列,行为将相同。 此修饰符不能与 rowchangetimestampignore 修饰符配合使用。
seclabelchar 指示输入源文件中的安全标号是安全标号值的字符串格式,而不是缺省编码数字格式。 装入时, IMPORT 会将每个安全标号转换为内部格式。 如果字符串的格式不正确,那么不会装入该行并返回警告 (SQLSTATE 01H53)。 如果字符串不表示作为保护表的安全策略的一部分的有效安全标号,那么不会装入该行,并且会返回警告 (SQLSTATE 01H53, SQLCODE SQL3243W)。

如果指定了修改器,则不能指定这个修改器,否则导入将失败并返回错误(SQLCODE SQL3525N )。

Seclabelname 指示输入源文件中的安全标号由其名称而不是缺省编码数字格式指示。 IMPORT 会将名称转换为相应的安全标号 (如果存在)。 如果不存在具有保护表的安全策略的指示名称的安全标号,那么不会装入该行,并且会返回警告 (SQLSTATE 01H53, SQLCODE SQL3244W)。

如果指定了seclabelchar修饰符,则不能指定该修饰符,否则导入将失败并返回错误(SQLCODE SQL3525N )。

注: 如果文件类型为 ASC ,那么安全标号的名称后面的任何空格都将被解释为名称的一部分。 要避免此情况,请使用 striptblank 文件类型修饰符来确保除去空格。
transactionidignore 此修饰符告知导入实用程序,数据文件中存在TRANSACTION START ID列的数据,但可以忽略。 当指定此修饰符时,TRANSACTION START ID 列的值由实用程序生成。 此修饰符不能与 transactionidmissing 修饰符配合使用。
transactionidmissing 如果指定了此修饰符,那么实用程序假定输入数据文件不包含 TRANSACTION START ID 列的数据。 当指定此修饰符时,TRANSACTION START ID 列的值由实用程序生成。 此修饰符不能与 transactionidignore 修饰符配合使用。
使用缺省值 如果已指定目标表列的源列,但它不包含一个或多个行实例的数据,那么将装入缺省值。 缺少数据的示例是:
  • 对于 DEL 文件: 两个相邻的列定界符 (",,") 或由任意数目的空格 (",,") 分隔的两个相邻列定界符 为列值指定。
  • 对于 DEL/ASC 文件: 没有足够列的行,或者对于原始规范不够长的行。
    注: 对于 ASC 文件,不会将 NULL 列值视为显式缺失,并且不会将缺省值替换为 NULL 列值。 NULL 列值由数字、日期、时间和/时间戳记列的所有空格字符表示,或使用任何类型的列的 NULL INDICATOR 表示列为 NULL。
没有此选项,如果源列不包含行实例的数据,那么将发生以下情况之一:
  • 对于 DEL/ASC 文件: 如果该列可空,那么将装入 NULL。 如果该列不可空,那么该实用程序将拒绝该行。
如果输入数据在尝试更新现有行时缺少属于主键的列的值,那么不能在 INSERT_UPDATE 方式下使用 usedefaults 文件类型修饰符。 未更新现有行,并且返回了 SQL3116W 。
表 3. 导入实用程序的有效文件类型修饰符 :ASCII 文件格式 (ASC/DEL)
修饰符 描述
代码页= x x 是 ASCII 字符串。 此值解释为输入数据集中数据的代码页。 在导入操作期间,将字符数据从此代码页转换为应用程序代码页。
下列规则适用:
  • 对于纯 DBCS (图形) 混合 DBCS 和 EUC ,定界符限制在 x00 到 x3F(含) 的范围内。
  • nullindchar 必须指定包含在代码点 x20 和 x7F(含) 之间的标准 ASCII 集合中的符号。 这是指 ASCII 符号和代码点。
注:
  1. 如果在将代码页从应用程序代码页转换为数据库代码页时发生数据扩展,那么可能会截断数据并导致数据丢失。
dateformat= "x" x 是源文件中的日期格式。2 有效日期元素为:
YYYY
年(0000 到 9999 范围内的四位数)
M
月(1 到 12 范围内的一位数或两位数)
MM
月份 (两个数字,范围从 01 到 12; 与 M 互斥)
D
日(1 到 31 范围内的一位数或两位数)
DD
天 (两位数字,范围从 01 到 31; 与 D 互斥)
DDD
年内某日(001 到 366 范围内的三位数;与其他日或月元素互斥)
对于每个未指定的元素,将会指定缺省值 1。 以下是日期格式的一些示例:
   "D-M-YYYY"
   "MM.DD.YYYY"
   "YYYYDDD"
隐式十进制 隐式小数点的位置由列定义确定;不再假定其位于值末尾。 例如,12345 装入到 DECIMAL(8,2) 列作为 123.45不是 12345.00
timeformat= "x" x 是源文件中的时间格式。2 有效时间元素为:
H
小时(对于 12 小时制,这是 0-12 范围内的一位数或两位数,对于 24 小时制,这是 0-24 范围内的一位数或两位数)
HH
小时(对于 12 小时制,这是 00-12 范围内的两位数,对于 24 小时制,这是 00-24 范围内的两位数;与 H 互斥)
M
分钟(0 到 59 范围内的一位数或两位数)
MM
分钟 (两位数字,范围从 00 到 59; 与 M 互斥)
S
秒(0 到 59 范围内的一位数或两位数)
SS
秒(00 到 59 范围内的两位数;与 S 互斥)
SSSSS
每一天午夜后的秒(00000 到 86400 范围内的 5 位数;与其他时间元素互斥)
TT
上下午指示符(AM 或 PM)
将为未指定的每个元素分配缺省值 0 。 时间格式的一些示例是:
   "HH:MM:SS"
   "HH.MM TT"
   "SSSSS"
timestampformat= "x" x 是源文件中时间戳记的格式。2 有效时间戳记元素为:
YYYY
年(0000 到 9999 范围内的四位数)
M
月(1 到 12 范围内的一位数或两位数)
MM
月份 (两位数字,范围从 01 到 12; 与 M 和 MMM 互斥)
MMM
Month (月份名称的三字母不区分大小写的缩写; 与 M 和 MM 互斥)
D
日(1 到 31 范围内的一位数或两位数)
DD
天 (两位数字,范围从 01 到 31; 与 D 互斥)
DDD
年内某日(001 到 366 范围内的三位数;与其他日或月元素互斥)
H
小时(对于 12 小时制,这是 0-12 范围内的一位数或两位数,对于 24 小时制,这是 0-24 范围内的一位数或两位数)
HH
小时(对于 12 小时制,这是 00-12 范围内的两位数,对于 24 小时制,这是 00-24 范围内的两位数;与 H 互斥)
M
分钟(0 到 59 范围内的一位数或两位数)
MM
分钟 (两位数字,范围从 00 到 59; 与 M 互斥,分钟)
S
秒(0 到 59 范围内的一位数或两位数)
SS
秒(00 到 59 范围内的两位数;与 S 互斥)
SSSSS
每一天午夜后的秒(00000 到 86400 范围内的 5 位数;与其他时间元素互斥)
U (1 到 12 次)
小数秒数 (出现 U 的次数表示从 0 到 9 的每个数字的位数
TT
上下午指示符(AM 或 PM)
为未指定的 YYYY , M , MM , D , DD 或 DDD 元素指定缺省值 1 。 将缺省值 'Jan' 分配给未指定的 MMM 元素。 将为所有其他未指定的元素分配缺省值 0 。 以下是时间戳记格式的示例:
   "YYYY/MM/DD HH:MM:SS.UUUUUU"

MMM 元素的有效值包括: 'jan''feb''mar''apr''may''jun''jul''aug''sep''oct''nov''dec'。 这些值区分大小写。

以下示例说明如何将包含用户定义的日期和时间格式的数据导入到名为 schedule 的表中:
   db2 import from delfile2 of del
      modified by timestampformat="yyyy.mm.dd hh:mm tt"
      insert into schedule
usegraphiccodepage 如果给出了 usegraphiccodepage ,那么假定要导入到图形或双字节字符大对象 (DBCLOB) 数据字段中的数据位于图形代码页中。 并且,假定其余数据采用字符代码页。 该图形代码页与该字符代码页相关联。 IMPORT 通过 codepage 修饰符 (如果已指定) 或通过应用程序的代码页 (如果未指定 codepage 修饰符) 来确定字符代码页。

仅当要恢复的表格包含图形数据时,此修饰符才能与通过删除表格恢复生成的分隔数据文件一起使用。

限制

usegraphiccodepage 修饰符不得与 EXPORT 实用程序创建的 DEL 文件一起指定,因为这些文件仅包含一个代码页编码的数据。 文件中的双字节字符大对象 (DBCLOB) 也会忽略 usegraphiccodepage 修饰符。

xmlchar 指定 XML 文档在字符代码页中编码。

此选项对于处理在指定字符代码页中编码但不包含编码声明的 XML 文档很有用。

对于每个文档,如果存在声明标记并且包含编码属性,那么编码必须与字符代码页匹配,否则包含该文档的行将被拒绝。 请注意,字符代码页是由 codepage 文件类型修饰符指定的值,或者是应用程序代码页 (如果未指定)。 缺省情况下,文档采用 Unicode 编码,或者它们包含具有 encoding 属性的声明标记。

XML 图形 指定 XML 文档在指定的图形代码页中编码。

此选项对于处理在特定图形代码页中编码但不包含编码声明的 XML 文档很有用。

对于每个文档,如果存在声明标记并且包含编码属性,那么该编码必须与图形代码页匹配,否则包含该文档的行将被拒绝。 请注意,图形代码页是 codepage 文件类型修饰符指定的值的图形组件,或者应用程序代码页的图形组件 (如果未指定)。 缺省情况下,文档以 Unicode 编码,或者它们包含具有编码属性的声明标记。

注: 如果使用 IMPORT 命令指定了 xmlgraphic 修饰符,那么必须在 UTF-16 代码页中对要导入的 XML 文档进行编码。 否则,XML文档可能会因解析错误而被拒绝,或者可能会在导入到表格时出现数据损坏。
表 4. 导入实用程序的有效文件类型修饰符 :ASC (非定界 ASCII) 文件格式
修饰符 描述
不检查长度 如果指定了 nochecklengths ,那么将尝试导入每行,即使源数据的列定义超过目标表列的大小也是如此。 如果代码页转换导致源数据缩小,那么可以成功导入此类行; 例如,源中的 4 字节 EUC 数据可以缩小到目标中的 2 字节 DBCS 数据,并且需要一半的空间。 如果已知尽管列定义不匹配,但源数据在所有情况下都适合,那么此选项特别有用。
nullindchar=x x 是单个字符。 将表示空值的字符更改为 xx 的缺省值为 Y3

对于 EBCDIC 数据文件,此修饰符区分大小写,但字符为英文字母时除外。 例如,如果将空指示符字符指定为字母 N,那么 n 也可识别为空指示符。

reclen=x x 是一个整数,最大值为 32 767。将为每行读取 x 个字符,并且不使用换行符来指示行尾。
分割空白 将数据装入到变长字段中时,截断任何尾部空格。 如果未指定此选项,那么将保留空格。
在以下示例中, striptblanks 会导致 IMPORT 实用程序截断尾部空格:
   db2 import from myfile.asc of asc
      modified by striptblanks
      method l (1 10, 12 15) messages msgs.txt
      insert into staff

此选项不能与 striptnulls 一起指定。 这些是互斥选项。 此选项将替换废弃的 t 选项,该选项仅支持较早的兼容性。

striptnulls 将数据装入到变长字段中时,截断任何尾部 NULL (0x00 字符)。 如果未指定此选项,那么将保留 NULL。

此选项不能与 striptblanks 一起指定。 这些是互斥选项。 此选项将替换废弃的 padwithzero 选项,该选项仅支持较早的兼容性。

表 5。 导入实用程序的有效文件类型修饰符 :DEL (定界 ASCII) 文件格式
修饰符 描述
chardelx x 是单个字符串定界符。 缺省值为双引号 (")。 使用指定的字符代替双引号将字符串括起来。34 如果您想明确指定双引号作为字符串分隔符,可以按如下方式指定:
    modified by chardel""
单引号 (') 也可以指定为字符串定界符。 在以下示例中, chardel'' 使 IMPORT 实用程序将它迂到的任何单引号 (') 解释为字符串定界符:
   db2 "import from myfile.del of del
      modified by chardel''
      method p (1, 4) insert into staff (id, years)"
coldelx x 是单个字符列分隔符。 缺省值为逗号 (,)。 使用指定的字符来代替逗号,以指示列的结束。34
在以下示例中, coldel; 使 IMPORT 实用程序将它迂到的任何分号 (;) 解释为列定界符:
   db2 import from myfile.del of del
      modified by coldel;
      messages msgs.txt insert into staff
DECPLUSBLANK 加号字符。 使正十进制值以空格代替加号 (+) 作为前缀。缺省操作是使用加号来前缀正十进制值。
decptx x 是句点作为小数点字符的单个字符。 缺省值为句点 (.)。 使用指定的字符代替句点作为小数点字符。34
在以下示例中, decpt; 使 IMPORT 实用程序将它迂到的任何分号 (;) 解释为小数点:
   db2 "import from myfile.del of del
      modified by chardel''
      decpt; messages msgs.txt insert into staff"
delprioritychar 定界符的当前缺省优先级为:记录定界符、字符分隔符、列分隔符。 此修饰符通过将定界符优先级还原为:字符分隔符、记录定界符、列分隔符来保护依赖于较旧优先级的现有应用程序。 语法:
   db2 import ... modified by delprioritychar ...
例如,给定以下 DEL 数据文件:
   "Smith, Joshua",4000,34.98<row delimiter>
   "Vincent,<row delimiter>, is a manager", ...
   ... 4005,44.37<row delimiter>

在指定了 delprioritychar 修饰符的情况下,此数据文件中将只有两行。 第二行定界符将解释为第二行的第一数据列的一部分,而第一行定界符和第三行定界符将解释为实际记录定界符。 If this modifier is specified, there will be three rows in this data file, each delimited by a <row delimiter>.

凯普空白 在类型为 CHAR、VARCHAR、LONG VARCHAR 或 CLOB 的每个字段中保留前导空格和尾部空格。 如果没有此选项,那么将移除不在字符定界符内的所有前导空格和尾部空格,并将 NULL 插入到所有空白字段的表中。
nochardel 导入实用程序将假定在列定界符之间找到的所有字节都是列数据的一部分。 字符定界符将作为列数据的一部分进行解析。 如果数据是通过 Db2 导出的,则无法指定此选项(除非在导出时指定了 nochardel)。 提供此修饰符的目的是支持不具有字符定界符的供应商数据文件。 使用不当可能会导致数据丢失或损坏。

此选项不能与 chardelxdelprioritycharnodoubledel 一起指定。 这些是互斥选项。

nodoubledel 禁止识别双字符定界符。
表 6。 导入实用程序的有效文件类型修饰符 :IXF 文件格式
修饰符 描述
强力 指示实用程序在代码页不匹配的情况下接受数据,并禁止在代码页之间进行转换。

将检查固定长度的目标字段,以验证它们对于数据是否足够大。 如果指定了 nochecklengths ,那么不会执行任何检查,并且会尝试导入每行。

因代克西夫 指示实用程序删除当前在现有表上定义的所有索引,并从 PC/IXF 文件中的索引定义创建新的索引。 仅当替换表的内容时,才能使用此选项。 它不能与视图一起使用,也不能在指定 insert-column 时使用。
注意: indexixf 参数已被弃用,可在未来版本中删除。 有关详细信息,请参阅 “导入”命令选项 。CREATE 和REPLACE_CREATE命令已弃用
indexschema=模式 在创建索引期间,将指定的 模式 用于索引名。 如果未指定 schema (但指定了关键字 indexschema ) ,请使用连接用户标识。 如果未指定该关键字,请使用 IXF 文件中的模式。
不检查长度 如果指定了 nochecklengths ,那么将尝试导入每行,即使源数据的列定义超过目标表列的大小也是如此。 如果代码页转换导致源数据缩小,那么可以成功导入此类行; 例如,源中的 4 字节 EUC 数据可以缩小到目标中的 2 字节 DBCS 数据,并且需要一半的空间。 如果已知尽管列定义不匹配,但源数据在所有情况下都适合,那么此选项特别有用。
福塞克雷亚特 指定在导入操作期间返回 SQL3311N 后,可以创建可能缺少或有限信息的表。
表 7。 使用代码页和 usegraphiccodepage 时的 IMPORT 行为
codepage=N usegraphiccodepage IMPORT 行为
不存在 不存在 假定文件中的所有数据都在应用程序代码页中。
已存在 不存在 假定文件中的所有数据都在代码页 N 中。

警告: 如果 N 是单字节代码页,那么在导入到数据库时图形数据将损坏。

不存在 已存在 假定文件中的字符数据位于应用程序代码页中。 假定图形数据位于应用程序图形数据的代码页中。

如果应用程序代码页是单字节的,那么假定所有数据都在应用程序代码页中。

警告: 如果应用程序代码页是单字节的,那么在导入到数据库时,即使数据库包含图形列,图形数据也将损坏。

已存在 已存在 假定字符数据在代码页 N 中。 假定图形数据在 N 的图形代码页中。

如果 N 是单字节或双字节代码页,那么假定所有数据都在代码页 N 中。

警告: 如果 N 是单字节代码页,那么在导入到数据库时图形数据将损坏。

注:
  1. 如果尝试将不受支持的文件类型与 MODIFIED BY 选项配合使用,那么 IMPORT 实用程序不会发出警告。 如果尝试此操作,那么导入操作将失败,并返回错误代码。
  2. 日期格式字符串两旁的双引号是必需的。 字段分隔符不能包含下列任何一项 :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)

    某些字符 (例如,双引号和反斜杠) 必须以转义字符 (例如, \) 开头。

  3. 必须在源数据的代码页中指定为 chardel , coldel 或 decpt 文件类型修饰符提供的字符值。
    字符代码点(而非字符符号)可通过语法 xJJ 或 0xJJ 指定,其中JJ是代码点的十六进制表示。 例如,要将 # 字符指定为列定界符,请使用下列其中一个语句:
       ... modified by coldel# ...
       ... modified by coldel0x23 ...
       ... modified by coldelX23 ...
  4. 移动数据的定界符注意事项列出了适用于可用作定界符覆盖的字符的限制。
  5. 导入昵称时,不允许使用以下文件类型修饰符:
    • indexixf
    • indexschema
    • dldelfiletype
    • nodefaults
    • usedefaults
    • no_type_idfiletype
    • generatedignore
    • generatedmissing
    • identityignore
    • identitymissing
    • lobsinfile
  6. XML 列不支持 CREATE 方式。
  7. 所有 XML 数据都必须位于与主数据文件分开的 XML 文件中。 对于主数据文件中的每个 XML 列,必须存在 XML 数据说明符 (XDS) (或 NULL 值)。
  8. 除非指定了 XMLCHAR 或 XMLGRAPHIC 文件类型修饰符,否则假定 XML 文档为 Unicode 格式或包含包含编码属性的声明标记。
  9. 包含格式不正确的文档的行将被拒绝。
  10. 如果指定了 XMLVALIDATE 选项,那么在插入文档时,将使用模式信息对成功验证其匹配模式的文档进行注释。 包含无法针对其匹配模式进行验证的文档的行将被拒绝。 要成功执行验证,调用导入的用户所拥有的特权必须至少包含下列其中一项:
    • DBADM 权限
    • 要在验证中使用的 XML 模式的 USAGE 特权
  11. 如果指定了多个后缀为 ignoreincludemissingoverride 的修饰符,那么将按照它们列出的顺序应用这些修饰符。 在以下语句中,非标识列的隐式隐藏列的数据包含在输入数据中。 虽然所有标识列的数据(无论其隐式隐藏状态如何)都不是。
    db2 import from delfile1 of del modified by 
       implicitlyhiddeninclude identitymissing insert into table1 
    但是,更改以下语句中文件类型修饰符的顺序意味着所有隐式隐藏列(包括隐藏标识列)的数据都包含在输入数据中。 虽然未隐式隐藏的标识列的数据不是。
    db2 import from delfile1 of del modified by 
       identitymissing implicitlyhiddeninclude insert into table1 
    如果 DB2_DMU_DEFAULT 注册表变量设置为 IMPLICITLYHIDDENINCLUDE,那么:
    db2set DB2_DMU_DEFAULT=IMPLICITLYHIDDENINCLUDE
    db2 import from delfile1 of del modified by identitymissing insert into table1
    相当于:
    db2 import from delfile1 of del modified by 
       implicitlyhiddeninclude identitymissing insert into table1