每次插入一行数据会花费很长时间,尤其是对于有数千职员或数百万次客户交易的大公司。导入和装载实用程序可以简化这个任务。另外,有时候需要将数据从表中取出,并放进数据文件供进一步分析和处理。导出实用程序在这种情况下是有帮助的。导入、装载和导出数据实用程序还可以用来将数据从一个表转移到另一个表,或者从一个数据库转移到另一个数据库。
在以下练习中,将导入来自一个硬盘文件的数据,然后将数据从表中导出到另一个文件中。(在 下载 部分中可以找到为本教程创建的文件。)然后,将使用装载实用程序用一个文件中存储的数据填充一个表。
尽管导入、装载和导出实用程序有许多选项,但是本练习只关注以下选项:
- File type —— 指定存储数据的文件的格式。在这个示例中使用 DEL,这意味着分界的 ASCII 文件
- Select statement —— 表示在 Export 期间是选择一个表中的所有列(select *),还是选择特定的列(select <column list>)。在这个示例中,选择所有列。
- Import/Load operation —— 表示在 Import 期间是插入数据(追加)、替换数据、更新重复数据还是使用数据文件创建表。在这个示例中,插入数据。
对于这些实用程序的完整描述,请参考 DB2 Data Movement Utilities Guide and Reference(参见 参考资料)。
1、使用导入填充 HWLD.AUTHOR 表。在 Control Center 中,右击 AUTHOR 表并选择 Import。
2、按照下图选择选项:
图 30. 导入表 —— Author
在这里,让 DB2 使用文件 author.del(下载 部分提供的 zip 文件中包含这个文件)填充 HWLD.AUTHOR 表。与导入相关的消息会放入消息文件 C:\DB2\hellowld\import.msg。
3、在 Columns 选项卡上,输入寻找 XML 列所用的路径。
图 31. 导入表 —— Author
可以点击 Show Command 查看完整的导入语句,如果需要,还可以保存这个语句。应该会返回消息 DB20000,这表示一切正常。
4、使用装载命令填充 HWLD.MODULE 表。右击 MODULE 表并选择 Load。
5、在 Load 向导中选择 Append data to table。点击 Next。
6、找到文件 module.del(下载 部分提供的 zip 文件中包含这个文件),从而提供输入文件的完整路径和文件名,然后指定消息文件。
图 32. Load 向导 —— 文件
7、点击 Summary。可以查看并保存装载语句,以便在命令行上运行。如果点击 Finish,这个命令应该会成功执行,会看到显示 DB20000 消息的消息窗口。
8、验证数据完整性并查询数据。
因为 Module 表定义了完整性约束,所以在运行装载实用程序之后,必须验证完整性,否则不能访问这个表。为此,从 Command Editor 运行 SET INTEGRITY 语句。设置完整性检查会确保每一行都满足约束条件,并删除任何不满足条件的行。
9、选择 MODULE 表并点击 Query。
图 33. 查询 HWLD.MODULE 表
运行了这个表的默认语句 SELECT *。
10、在选择语句之前,添加以下 SET INTEGRITY 语句: ------------------------------ Commands Entered -----------------------------
set integrity for hwld.module immediate checked;
SELECT * FROM HWLD.MODULE;
-----------------------------------------------------------------------------
set integrity for hwld.module immediate checked
DB20000I The SQL command completed successfully.
SELECT * FROM HWLD.MODULE
MODULE_ID MODULE_NAME
----------- --------------------
1 DB2 UDB
2 WebSphere
3 Tivoli
4 Eclipse
5 Rational
6 Lotus Notes
7 Web Commerce
7 record(s) selected.
11、装载 HWLD.PARTICIPANT 表。在 Control Center 中,右击 PARTICIPANT 表并选择 Load。按照图 34 选择装载选项,这与对 HWLD.MODULE 表的操作相似。文件 participant.del 也包含在 下载 部分提供的 zip 文件中。
图 34. Load 向导
同样,因为 Participant 表定义了引用约束,装载操作会使它进入检查未决状态,所以在验证所有行之前不能访问它。
12、点击 PARTICIPANT 表并选择 Query。在选择语句之前,输入 SET INTEGRITY 语句。修改选择语句,让它只选择 ID 为 4 的参与者的参与者名称、ID 和测试分数: ------------------------------ Commands Entered -----------------------------
set integrity for hwld.participant immediate checked;
SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4;
-----------------------------------------------------------------------------
set integrity for hwld.participant immediate checked
DB20000I The SQL command completed successfully.
SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4
PAR_NAME PAR_ID PAR_TEST_SCORE
----------------------------------------- -------------------- --------------
mike 4 60
mike 4 80
2 record(s) selected.
13、既然已经填充了表,就该将数据导出到数据文件了。为了选择要导出数据的表,右击 AUTHOR 表并选择 Export。以下窗口打开:
图 35. 导出表
14、按照上图所示输入必要的信息。在 Columns 选项卡上,选择将每个 XML 文件放在单独的文件中。可以点击 Show Command 查看并保存命令,供以后在命令行上使用。
应该会看到 DB20000,这表示一切正常。
输出文件是 C:\DB2\hellowld\user1_author.del。user1_author.del 文件的内容如下:
"Claire",1,"DB2 UDB ","<XDS FIL='author.del.001.xml'/>", 100
"Renata",2,"DB2 UDB ","<XDS FIL='author.del.002.xml'/>", 98
"Jane",3,"WEB COMMERCE ","<XDS FIL='author.del.003.xml'/>", 89
注意,MODULE_NAME 列被填充到 20 个字符。另外,XML 文档实际上不在 DEL 文件中,这里只有一个引用(XDS),它指向包含 XML 数据的文件。
下面是 author.del.001.xml 的内容(为了便于阅读,已经调整了格式):
<?xml version="1.0" encoding="UTF-8" ?>
<author_info>
<name>Claire</name>
<ID>1</ID>
<department>
<department_title>DB2 CE</department_title>
<responsibility>Supporting customer problems</responsibility>
<start_year>2005</start_year>
</department>
<department>
<department_title>DB2 Index Manager</department_title>
<responsibility>Develop new features for DB2 indexes</responsibility>
<start_year/>
</department>
</author_info>
如果使用 Web 浏览器查看 XML 文档,会看到:
图 36. XML 数据