DB2 export详解
EXPORT实用程序使用SQL select语句或XQUERY语句抽取数据,并将信息放到文件中。可使用输出文件移动数据以便执行IMPORT或LOAD操作,或者将数据用于分析。
EXPORT TO filename OF { IXF | DEL | WSF }
[ LOBS TO lob-path[{,lob-path}…] ]
[ LOBFILE lob-file[{,lob-file}…] ]
[ XML TO xml-path[{,xml-path}…] ]
[ XMLFILE file-name[{,filename}…] ]
[ MODIFIED BY {filetype-mod …} ][ XMLSAVESCHEMA ]
[ METHOD N ( column-name[{,column-name}…] ) ]
[ MESSAGES message-file ]
{ select-statement | XQUERY xquery-statement |
HIERARCHY{ STARTING sub-table-name |
(sub-tablename[{,sub-table-name}…])
}
[ WHERE … ]
}
filetype-mod:
NODOUBLEDEL、LOBSINFILE、CHARDELx、COLDELx、DECPLUSBLANK、DECPTx、DATESISO、1、2、3、4、CODEPAGE=x、STRIPLZEROS、NOCHARDEL、LOBSINSEPFILES、XMLINSEPFILES、XMLCHAR、XMLGRAPHIC、XMLNODECLARATION、TIMESTAMPFORMAT=x
说明:1、对于大部分导出操作,需要提供SELECT语句指定需要进行检索以便导出的数据。导出类型表时,不必显式发出SELECT语句,而只需要指定层次结构中的子表遍历顺序。
2、MODIFIED BY filetype-mod文件类型修饰符提供了允许更改数据、日期和时间戳记或代码页格式之类的许多选项,或者已编写特定数据类型以分隔文件。
3、METHOD参数可指定要用于已导出数据的不同列名。
4、消息文件:EXPORT会将错误消息、警告消息和参考消息写至表中ASCII文本消息文件。MESSAGES参数指定这些文件的名称。
5、因为EXPORT是嵌入式SQL应用程序并且以内部方式执行SQL访存,所以应用于SQL操作的优化会同时应用于EXPORT实用程序。考虑采用大型缓冲池、建立索引和排序堆的好处,另外,通过将输出文件放在容器和日志设备外部来尽量降低输出文件争用问题。
6、对参与导出操作的每个表或视图,都必须具有DATAACCESS权限或者CONTROL或SELECT特权。
示例:
1、以IXF输出格式将sample数据库的STAFF表中有关Department 20的职员信息导出至exp_sampl_staff.ixf。
D:\>db2 export to exp_sampl_staff.ixf of ixf messages msgs.txt select * from staff where dept=20
导出的行数:4
2、将LOB导出到DEL文件。
D:\>db2 export to myfile.del of del lobs to d:\mylobs\ lobfile lobs1,lobs2 modified by lobsinfile select * from emp_photo
SQL3104N EXPORT 实用程序 正在开始将数据导出至文件 "myfile.del"。
SQL3105N Export 实用程序已经完成导出 "8" 行。
导出的行数:8
3、将LOB导出到DEL文件,对可能无法装入到第一个目录中的文件指定第二个目录:
D:\>db2 export to myfile.del of del lobs to d:\mylobs1, d:\mylobs2 modified by lobsinfile select * from emp_photo
SQL3104N EXPORT 实用程序 正在开始将数据导出至文件 "myfile.del"。
SQL3105N Export 实用程序已经完成导出 "8" 行。
导出的行数:8
4、将数据导出到DEL文件,将单引号用作字符串定界符,分号用作列定界符,逗号用作小数点。
D:\>db2 export to myfile.del of del modified by chardel'' coldel; decpt, select * from staff
SQL3104N EXPORT 实用程序 正在开始将数据导出至文件 "myfile.del"。
SQL3105N Export 实用程序已经完成导出 "35" 行。
导出的行数:35
与不指定修饰符的文件内容进行对比:
D:\>db2 export to myfile2.del of del select * from staff
SQL3104N EXPORT 实用程序 正在开始将数据导出至文件 "myfile2.del"。
SQL3105N Export 实用程序已经完成导出 "35" 行。
导出的行数:35
部分内容对比如下:
myfile2: 10,"Sanders",20,"Mgr ",7,+98357.50,
myfile: 10;'Sanders';20;'Mgr ';7;+98357,50;
表导出注意事项:
1、如果出现下列任一情况,那么某些信息不会保存至已导出IXF文件:
l 索引列名包含十六进制值0x2B或0x2D。
l 该表包含XML列。
l 该表是多维集群表(MDC)。
l 该表包含表分区键。
l 由于代码页转换,索引名长度超过128个字节。
l 该表是受保护的。
l EXPORT命令包含SELECT * FROM tablename以外的操作字符串。
l 对导出实用程序指定了METHOD N参数。
2、如果索引中指定的列名包含-或+字符,那么不会收集索引信息,并且将返回警告SQL27984W。EXPORT实用程序完成处理,并且不会影响已导出的数据。但是,索引信息未保存在IXF文件中。因此,您必须使用 db2look 实用程序来单独创建索引。
3、如果导出的数据超过创建导出文件所在文件系统的可用空间量,导出操作会失败。在这种情况下,应该通过在WHERE子句中指定条件来对选择的数据量进行限制,以使已导出文件能够存放在目标文件系统中。可以多次运行EXPORT以导出所有数据。
4、如果未使用IXF文件格式进行导出,那么输出文件不包含目标表的描述,但它们包含记录数据。要重新创建表及其数据,需创建目标表,然后使用LOAD或IMPORT实用程序填充该表。可使用db2look实用程序来捕获原始表定义,并生成相应的DDL。