DB2 10.5 for Linux, UNIX, and Windows

导入数据

IMPORT 实用程序将具有受支持文件格式的外部文件中的数据插入到表、层次结构、视图或昵称中。 另一种速度更快的方法是使用 LOAD 实用程序,但 LOAD 实用程序不支持在层次结构级别装入数据。

开始之前

在调用 IMPORT 实用程序前,必须连接至(或能够隐式连接至)要将数据导入到其中的数据库。如果启用了隐式连接,那么将建立与缺省数据库的连接。

实用程序从 DB2® for Linux, UNIX, or Windows 客户机访问 DB2 for Linux, UNIX, or Windows 数据库服务器时,必须借助通过引擎进行的直接连接。实用程序访问不能借助 DB2 Connect™ 网关或回送环境进行。

由于实用程序会发出 COMMIT 或 ROLLBACK 语句,因此在调用导入之前,请通过发出 COMMIT 语句或 ROLLBACK 操作来完成所有事务并释放所有锁定。

注: 建议不要使用 IMPORT 命令的 CREATEREPLACE_CREATE 参数,将来的发行版中可能会除去这两个参数。

限制

IMPORT 实用程序存在下列限制:
  • 如果现有表是一个父表,并且它包含的主键被从属表中的外键引用,那么不能替换此表的数据,而只能追加数据。
  • 不能执行导入替换操作来将数据导入到以立即刷新方式定义的具体化查询表的底层表中。
  • 不能将数据导入到系统表、摘要表或其他带有结构化类型列的表中。
  • 不能将数据导入到已声明的临时表中。
  • 不能通过 IMPORT 实用程序创建视图。
  • 根据 PC/IXF 文件创建表时,不会保留引用约束和外键定义。(如果先前是通过使用 SELECT * 来导出数据,那么保留主键定义。)
  • 由于 IMPORT 实用程序会生成自己的 SQL 语句,所以在某些情况下可能会超过最大语句大小(即 2 MB)。
  • 您无法通过使用 CREATEREPLACE_CREATE 导入参数来重新创建分区表或多维集群表 (MDC)。
  • 无法重新创建包含 XML 列的表。
  • 无法导入已加密的数据。
  • 导入替换操作无法识别 Not Logged Initially 子句。IMPORT 命令的 REPLACE 参数不识别 CREATE TABLE 语句的 NOT LOGGED INITIALLY (NLI) 子句或 ALTER TABLE 语句的 ACTIVATE NOT LOGGED INITIALLY 子句。如果包含 REPLACE 操作的导入操作与调用了 NLI 子句的 CREATE TABLE 或 ALTER TABLE 语句在同一事务内执行,那么此导入操作不能识别该 NLI 子句。在此方案中,系统会记录所有插入操作。

    变通方法 1:通过使用 DELETE 语句来删除表的内容,然后使用 INSERT 语句调用导入操作。

    变通方法 2:删除然后重新创建该表,接着使用 INSERT 语句调用导入操作。

以下限制适用于 IMPORT 实用程序:如果导入操作针对远程数据库生成的输出消息量超过 60 KB,那么 IMPORT 实用程序会保留前 30 KB 和后 30 KB。

过程

要调用 IMPORT 实用程序,请执行以下操作:
  • 在命令行处理器 (CLP) 中发出 IMPORT 命令。
  • 从客户机应用程序调用 db2Import 应用程序编程接口 (API)。
  • IBM® Data Studio 中对 IMPORT 命令打开任务助手。

示例

简单导入操作只需要您指定输入文件、文件格式、导入方式和目标表(或要创建的表的名称)。

例如,要从 CLP 导入数据,请输入 IMPORT 命令:
db2 import from filename of fileformat import_mode into table	
其中 filename 是包含要导入的数据的输入文件的名称,fileformat 是文件格式,import_mode 是方式,table 是要将数据插入到其中的表的名称。
但是,您可能还想指定用于写入警告消息和错误消息的消息文件。为此,请添加 MESSAGES 参数和消息文件名称。例如:
db2 import from filename of fileformat messages messagefile import_mode into table