将数据从数据库导出为若干外部文件格式之一。 用户通过提供 SQL SELECT 语句或通过提供类型表的分层信息来指定要导出的数据。
授权为下列其中一种权限:
DATAACCESS 权限
对每个参与表或视图的 CONTROL 或 SELECT 特权
对此功能实施基于标签的访问控制 (LBAC)。 如果数据受 LBAC 保护,那么导出的数据可能受调用者的 LBAC 凭证限制。
需要的连接数据库。 如果启用了隐式连接,那么将建立与缺省数据库的连接。
API 包含文件db2ApiDf.h
API 和数据结构语法SQL_API_RC SQL_API_FN
db2Export (
db2Uint32 versionNumber,
void * pParmStruct,
struct sqlca * pSqlca);
typedef SQL_STRUCTURE db2ExportStruct
{
char *piDataFileName;
struct sqlu_media_list *piLobPathList;
struct sqlu_media_list *piLobFileList;
struct sqldcol *piDataDescriptor;
struct sqllob *piActionString;
char *piFileType;
struct sqlchar *piFileTypeMod;
char *piMsgFileName;
db2int16 iCallerAction;
struct db2ExportOut *poExportInfoOut;
struct db2ExportIn *piExportInfoIn;
struct sqlu_media_list *piXmlPathList;
struct sqlu_media_list *piXmlFileList;
} db2ExportStruct;
typedef SQL_STRUCTURE db2ExportIn
{
db2Uint16 *piXmlSaveSchema;
} db2ExportIn;
typedef SQL_STRUCTURE db2ExportOut
{
db2Uint64 oRowsExported;
} db2ExportOut;
SQL_API_RC SQL_API_FN
db2gExport (
db2Uint32 versionNumber,
void * pParmStruct,
struct sqlca * pSqlca);
typedef SQL_STRUCTURE db2gExportStruct
{
char *piDataFileName;
struct sqlu_media_list *piLobPathList;
struct sqlu_media_list *piLobFileList;
struct sqldcol *piDataDescriptor;
struct sqllob *piActionString;
char *piFileType;
struct sqlchar *piFileTypeMod;
char *piMsgFileName;
db2int16 iCallerAction;
struct db2ExportOut *poExportInfoOut;
db2Uint16 iDataFileNameLen;
db2Uint16 iFileTypeLen;
db2Uint16 iMsgFileNameLen;
struct db2ExportIn *piExportInfoIn;
struct sqlu_media_list *piXmlPathList;
struct sqlu_media_list *piXmlFileList;
} db2gExportStruct;
db2Export API 参数
versionNumber
输入。 指定作为第二个参数 pParmStruct传递的结构的版本和发行版级别。
pParmStruct
输入。 指向 db2ExportStruct 结构的指针。
pSqlca
输出。 指向 sqlca 结构的指针。
db2ExportStruct 数据结构参数
piDataFileName
输入。 一个字符串,其中包含要将数据导出到的外部文件的路径和名称。
piLobPathList
输入。 指向 sqlu_media_list 结构的指针,该结构的 media_type 字段设置为 SQLU_LOCAL_MEDIA,并且其 sqlu_media_entry 结构列出要存储 LOB 文件的客户机上的路径。 导出的 LOB 数据将在 sqlu_media_entry 结构中列出的所有路径之间均匀分布。
piLobFileList
输入。 指向 sqlu_media_list 结构 (其 media_type 字段设置为 SQLU_CLIENT_LOCATION) 及其包含基本文件名的 sqlu_location_entry 结构的指针。当使用此列表中的第一个名称耗尽名称空间时, API 将使用第二个名称,依此类推。 在导出操作期间创建 LOB 文件时,通过将当前基本名称从此列表追加到当前路径 (从 piLobPathList) ,然后追加 3 数字序号和 .lob 扩展名来构造文件名。 例如,如果当前 LOB 路径是目录 /u/test01/lob/path,当前 LOB 文件名是条形,并且设置了 LOBSINSEPFILES 文件类型修饰符,那么创建的 LOB 文件将是 /u/test01/LOB/path/bar.001.lob, /u/test01/LOB/path/bar.002.lob等。 如果未设置 LOBSINSEPFILES 文件类型修饰符,那么将合并所有 LOB 文档并将其放入一个文件中 /u/test01/lob/path/bar.001.lob
piDataDescriptor
输入。 指向 sqldcol 结构的指针,该结构指定输出文件的列名。 dcolmeth 字段的值确定导出实用程序如何解释此参数中提供的其余信息。 此参数的有效值 (在 sqlutil 头文件中定义,位于 include 目录中) 为:
SQL_METH_N
姓名。 指定要在输出文件中使用的列名。
SQL_METH_D
缺省值。 将在输出文件中使用表中的现有列名。 在这种情况下,列数和列规范数组都将被忽略。 列名派生自 piActionString中指定的 SELECT 语句的输出。
piActionString
输入。 指向包含有效动态 SQL SELECT 语句的 sqllob 结构的指针。 结构包含 4 字节的长字段,后跟组成 SELECT 语句的字符。 SELECT 语句指定要从数据库中抽取并写入外部文件的数据。根据外部文件 (来自 piDataDescriptor) 的列以及 SELECT 语句的数据库列的相应列表/结构位置进行匹配。 从数据库中选择的第一列数据放置在外部文件的第一列中,其列名取自外部列数组的第一个元素。
piFileType
输入。 指示外部文件中数据的格式的字符串。 受支持的外部文件格式 (在 sqlutil 头文件中定义) 包括:
SQL_DEL
ASCII分隔符,用于与 dBase,、BASIC和 IBM®以及许多其他数据库管理器和文件管理器进行交换。
SQL_IXF
集成交换格式的 PC 版本,这是从表中导出数据的首选方法。 稍后可以将导出到此文件格式的数据导入或装入到同一表或另一数据库管理器表中。
piFileTypeMod
输入。 一个指向 sqldcol 结构的指针,该结构包含 2 字节的长字段,后跟用于指定一个或多个处理选项的字符数组。 如果此指针为 NULL ,或者指向的结构包含零个字符,那么此操作将解释为选择缺省规范。并非所有选项都可以用于所有受支持的文件类型。 请参阅相关链接: "导出实用程序的文件类型修饰符"。
piMsgFileName
输入。 包含由实用程序返回的错误,警告和参考消息的目标的字符串。 它可以是操作系统文件或标准设备的路径和名称。 如果该文件已存在,那么将追加该信息。 如果该文件不存在,那么将创建文件。
iCallerAction
输入。 调用者请求的操作。 有效值 (在 sqlutil 头文件中定义,位于 include 目录中) 为:
SQLU_INITIAL
初始呼叫。 必须在第一次调用 API 时使用此值。 如果初始调用或任何后续调用返回并要求调用应用程序在完成所请求的导出操作之前执行某些操作,那么必须将调用者操作设置为下列其中一个值:
SQLU_CONTINUE
继续处理。 只有在对 API 的后续调用中,在初始调用返回了请求用户输入的实用程序 (例如,响应磁带结束情况) 之后,才能使用此值。 它指定该实用程序所请求的用户操作已完成,并且该实用程序可以继续处理初始请求。
SQLU_TERMINATE
终止处理。 只有在对 API 的后续调用中,在初始调用返回了请求用户输入的实用程序 (例如,响应磁带结束情况) 之后,才能使用此值。 它指定未执行该实用程序所请求的用户操作,并且该实用程序将终止处理初始请求。
poExportInfoOut
指向 db2ExportOut 结构的指针。
piExportInfoIn
输入。 指向 db2ExportIn 结构的指针。
piXmlPathList
输入。 指向 sqlu_media_list 结构的指针,该结构的 media_type 字段设置为 SQLU_LOCAL_MEDIA,并且其 sqlu_media_entry 结构列出了要存储 XML 文件的客户机上的路径。 导出的 XML 数据将在 sqlu_media_entry 结构中列出的所有路径之间均匀分布。
piXmlFileList
输入。 指向 sqlu_media_list 结构 (其 media_type 字段设置为 SQLU_CLIENT_LOCATION) 及其包含基本文件名的 sqlu_location_entry 结构的指针。当使用此列表中的第一个名称耗尽名称空间时, API 将使用第二个名称,依此类推。 在导出操作期间创建 XML 文件时,通过将当前基本名称从此列表追加到当前路径 (从 piXmlFileList) ,然后追加 3 数字序号和 .xml 扩展名来构造文件名。 例如,如果当前 XML 路径为目录 /u/test01/xml/path,当前 XML 文件名为 bar ,并且设置了 XMLINSEPFILES 文件类型修饰符,那么创建的 XML 文件将为 /u/test01/xml/path/bar.001.xml, /u/test01/xml/path/bar.002.xml, 等。 如果未设置 XMLINSEPFILES 文件类型修饰符,那么将合并所有 XML 文档并将其放入一个文件 /u/test01/xml/path/bar.001.xml
db2ExportIn 数据结构参数
piXmlSaveSchema
输入。 指示用于验证每个导出的 XML 文档的 XML 模式的 SQL 标识应保存在导出的数据文件中。 可能的值是 true 和 false。
db2ExportOut 数据结构参数
oRowsExported
输出。 返回导出到目标文件的记录数。
特定于 db2gExportStruct 数据结构的参数
iDataFileNameLen
输入。 2 字节的无符号整数,表示数据文件名的长度 (以字节为单位)。
iFileTypeLen
输入。 表示文件类型的长度 (以字节为单位) 的 2 字节无符号整数。
iMsgFileNameLen
输入。 2 字节无符号整数,表示消息文件名的长度 (以字节为单位)。
使用说明在启动导出操作之前,必须通过以下两种方法之一来完成所有表操作并释放所有锁定:
关闭使用 WITH HOLD 子句定义的所有打开的游标,并通过执行 COMMIT 语句落实数据更改。
通过执行 ROLLBACK 语句来回滚数据更改。
可以在 SELECT 语句中使用表别名。
放入消息文件中的消息包括从消息检索服务返回的信息。 每条消息都以新行开头。
如果导出实用程序生成警告,那么消息将写出到消息文件,如果未指定标准输出,那么将写出标准输出。
如果外部列名数组 piDataDescriptor中的列数 ( sqldcol 结构的dcolnum 字段) 不等于 SELECT 语句生成的列数,那么将发出警告消息。 在这种情况下,写入外部文件的列数是两个数字中的较小者。 过多的数据库列或外部列名不用于生成输出文件。
如果手动绑定 db2uexpm.bnd 模块或任何其他随附的 .bnd 文件,那么不得使用绑定程序上的格式选项。
Db2 连接 可用于从DRDA服务器导出表格,例如 和 、VM和VSE的 以及System i的 。 Db2® for z/OS® OS/390® Db2 Db2 仅支持PC/IXF导出。
应使用 PC/IXF 导入在数据库之间移动数据。 如果将包含行分隔符的字符数据导出到定界 ASCII (DEL) 文件并由文本传输程序处理,那么包含行分隔符的字段将缩小或扩展。
当从 AIX® 系统调用时,导出实用程序将不会创建多部分 PC/IXF 文件。
当单个数据库表的内容导出到 PC/IXF 文件时,表的索引定义将包含在 PC/IXF 文件中,该文件具有以 SELECT * FROM 表名开头的 piActionString 参数以及指定缺省名称的 piDataDescriptor 参数。 如果 piActionString 的 SELECT 子句包含连接,那么不会为视图保存索引。 piActionString 参数中的 WHERE 子句, GROUP BY 子句或 HAVING 子句不会阻止保存索引。 在所有这些情况下,从类型表导出时,必须导出整个层次结构。
如果提供的 SELECT 语句的格式为: SELECT * FROM tablename ,那么导出实用程序将在 IXF 文件中存储表的 NOT NULL WITH DEFAULT 属性。
导出类型表时,只能通过指定目标表名和 WHERE 子句来表示子 SELECT 语句。 导出层次结构时,不能指定全查询和 SELECT 语句。
对于 IXF 以外的文件格式,建议指定遍历顺序列表,因为它告诉 Db2 如何遍历层次结构以及要导出的子表。 如果未指定此列表,那么将导出层次结构中的所有表,并且缺省顺序为 OUTER 顺序。 替代方法是使用缺省顺序,即 OUTER 函数给出的顺序。注: 在导入操作期间使用相同的遍历顺序。 LOAD 实用程序不支持装入层次结构或子层次结构。
REXX API 语法EXPORT :stmt TO datafile OF filetype
[MODIFIED BY :filetmod] [USING :dcoldata]
MESSAGES msgfile [ROWS EXPORTED :number]
CONTINUE EXPORT
STOP EXPORT
REXX API 参数
stmt
包含有效动态 SQL SELECT 语句的 REXX 主变量。 该语句指定要从数据库中抽取的数据。
数据文件
要将数据导出到其中的文件的名称。
filetype
导出文件中数据的格式。 支持的文件格式为:
DEL
定界 ASCII。
IXF
集成交换格式的 PC 版本。
文件修改
包含其他处理选项的主变量。
Dcoldata
包含要在导出文件中使用的列名的复合 REXX 主变量。 在以下中, XXX 表示主变量的名称:
XXX.0
列数 (变量的剩余部分中的元素数)。
XXX.1
第一列名称。
XXX.2
第二列名称。
XXX.3
等等。
如果此参数为 NULL,或者尚未指定 dcoldata 的值,那么实用程序将使用数据库表中的列名。
MSGFILE
要在其中发送错误和警告消息的文件,路径或设备名。
号
将包含导出行数的主变量。