使用提取选项,您可以从标准界面中重定向 SELECT 语句的输出,以直接转至一个或多个磁盘文件或指定管道。
选项名称允许值缺省值注释TEMP_EXTRACT_APPENDON 或 OFFOFFTEMP_EXTRACT_BINARYON 或 OFFOFFTEMP_EXTRACT_COMPRESSON 或 OFFOFF TEMP_EXTRACT_COLUMN_DELIMITER字符串','TEMP_EXTRACT_DIRECTORY字符串''TEMP_EXTRACT_ESCAPE_QUOTESON 或 OFFOFF TEMP_EXTRACT_FILE_EXTENSION字符串" TEMP_EXTRACT_FILE_PREFIX字符串
如果大文件系统(如 JFS2)所支持的文件大小大于缺省值,请将 TEMP_EXTRACT_SIZE
SET OPTION Temp_Extract_Size1 = 1073741824 KB注意 对于所有接受整数值的数据库选项,SAP IQ 会截去 <option-value> 设置的小数部分,只保留整数值。例如,值 3.8 将被截断为 3。
这些选项中最重要的是 TEMP_EXTRACT_NAME1;如果将其设置为其缺省设置(空字符串),则将禁用提取并且不重定向输出。要启用提取,请将 TEMP_EXTRACT_NAME1 设置为路径名称。选择一个未在别处使用的路径和文件名称。如果该文件尚不存在,则数据提取工具会创建该文件。
包含指定文件的目录和文件夹以及指定文件本身需要为启动 IQ 的用户(例如,sybase)设置写权限。在附加模式中,数据提取工具向文件末尾添加提取的行并且不会覆盖文件中的已有数据。
警告 如果选择现有文件的路径名,并将 TEMP_EXTRACT_APPEND 选项设置为 OFF(缺省值),则该文件的内容将被覆盖。
按顺序使用选项 TEMP_EXTRACT_NAME2 到 TEMP_EXTRACT_NAME8 指定多个输出文件的名称。例如,除非事先已设置 TEMP_EXTRACT_NAME1 和 TEMP_EXTRACT_NAME2 选项,否则 TEMP_EXTRACT_NAME3 将无效。
使用选项 TEMP_EXTRACT_SIZE1 到 TEMP_EXTRACT_SIZE8 指定相应的输出文件的最大大小。TEMP_EXTRACT_SIZE1 指定 TEMP_EXTRACT_NAME1 所指定的输出文件的最大大小,TEMP_EXTRACT_SIZE2 指定 TEMP_EXTRACT_NAME2 所指定的输出文件的最大大小,依此类推。
数据提取大小选项的缺省最小值为 0。IQ 可将此缺省值转换为以下各值:
设备类型大小磁盘文件AIX 和 HP-UX:0 – 64 GBSun Solaris 和 Linux:0 – 512 GBWindows:0 – 128 GB其它无限制
TEMP_EXTRACT_APPEND 与 TEMP_EXTRACT_SIZE
如果要提取到单个磁盘文件或单个指定管道,请将选项 TEMP_EXTRACT_NAME2 到 TEMP_EXTRACT_NAME8 以及 TEMP_EXTRACT_SIZE1 到 TEMP_EXTRACT_SIZE8 保留为缺省值。
注意 如果 SELECT 不返回行并且没有要重定向的输出,则会创建长度为零的空文件。如果指定多个提取文件,但没有足够的数据来填充所有这些文件,则这些文件仍会被创建。
TEMP_EXTRACT_DIRECTORY 选项控制是否允许用户使用数据提取工具。它还控制临时提取文件的放置目录,并覆盖在 TEMP_EXTRACT_NAME
TEMP_EXTRACT_DIRECTORY 选项可限制在用户对其具有写入访问权限的目录中创建大型数据提取文件的操作,从而增强了安全性并有助于控制磁盘管理。必须具有 SET ANY SYSTEM OPTION 系统特权才能设置此选项。此选项会立即生效。
TEMP_EXTRACT_DIRECTORY 的行为如下:
PUBLIC 设置为 FORBIDDEN,则任何人均不能运行数据提取。
数据提取类型包括:
TABLE 语句装载文件。
TEMP_EXTRACT_BINARY 和 TEMP_EXTRACT_SWAP 这两个选项可确定执行三种提取类型中的哪一种:
类型TEMP_EXTRACT_BINARYTEMP_EXTRACT_SWAP二进制ONOFF二进制/交换ONONASCIIOFFOFF
如果使用提取工具卸载数据时 TEMP_EXTRACT_BINARY 选项为 ON,则在装载二进制数据时必须为每个列使用 LOAD TABLE 语句 BINARY WITH NULL BYTE 参数。
在 ASCII 提取中,缺省情况下使用逗号分隔列值,并以换行符作为行结尾(在 UNIX 平台中)或以回车符/换行符对作为行结尾(在 Windows 平台中)。字符串不带引号。如果这些缺省设置不适用,则更改分隔符,使用:
如果使用的是多字节归类顺序,分隔符必须占 1 - 4 字节并且在当前使用的归类顺序中有效。应选择任何数据输出字符串本身中都不存在的分隔符。
TEMP_EXTRACT_ROW_DELIMITER 选项的缺省值为 ' '(空字符串)。IQ 将此选项的空字符串缺省值转换为换行符(在 UNIX 平台中)或回车符/换行符对(在 Windows 平台中)。
TEMP_EXTRACT_COLUMN_DELIMITER 选项控制列之间的分隔符。对于 ASCII 提取,如果将此选项设置为空字符串,则将以不带列分隔符的固定宽度 ASCII 写入提取的数据。数值数据类型和二进制数据类型在具有
注意 固定宽度 ASCII 提取的最小列宽是四字节,允许使用字符串 "NULL" 表示空值。例如,如果所提取的列为 CHAR(2) 并且 TEMP_EXTRACT_COLUMN_DELIMITER 设置为空字符串,则提取的数据后面会有两个空格。
在 ASCII 提取期间,下列选项控制引号的使用:
选项ASCII 提取操作TEMP_EXTRACT_QUOTES将字符串字段用引号引起来TEMP_EXTRACT_QUOTES_ALL将所有字段均用引号引起来TEMP_EXTRACT_QUOTE指定要用作引号的字符串
在 TEMP_EXTRACT_QUOTE 选项中指定的引号字符串与分隔符具有相同的限制。此选项的缺省值为空字符串,IQ 可将其转换为单引号。
TEMP_EXTRACT_NULL_AS_ZERO 和 TEMP_EXTRACT_NULL_AS_EMPTY 控制用于 ASCII 提取的空值的表示形式。当 TEMP_EXTRACT_NULL_AS_ZERO 设置为 ON 时,空值表示为:
CHAR 和 VARCHAR 字符类型
当 TEMP_EXTRACT_NULL_AS_EMPTY 设置为 ON 时,对于所有数据类型,空值的表示形式均为 ' '(空字符串)。
提取输出文件中不包含上述引号。当 TEMP_EXTRACT_NULL_AS_ZERO 和 TEMP_EXTRACT_NULL_AS_EMPTY 设置为 OFF(缺省值)时,在所有情况下均使用字符串 'NULL' 表示空值。
如果 TEMP_EXTRACT_NULL_AS_ZERO 为 ON,则 ASCII 提取向文件的 CHAR 或 VARCHAR 列所写入的字符数等于列中的字符数,即使该数字小于四也是如此。
当 QUERY_PLAN 选项设置为 ON 时,所提取列的列表(带时间戳)会显示在 IQ 消息日志中。
TEMP_EXTRACT_LENGTH_PREFIX 选项为数据提取功能生成的导出文件中的 varchar 或 varbinary 列指定指定长度(字节)的前缀字段。此选项允许您使用 LOAD TABLE 语句中的 BINARY PREFIX 为 varchar 或 varbinary 列进行二进制数据装载。
TEMP_EXTRACT_VARYING 允许您仅提取 varchar 或 varbinary 列的实际数据,而无需进行尾随填充。这使得您可以在二进制数据装载过程中在 LOAD TABLE 语句中对 varchar 或 varbinary 列使用 BINARY PREFIX VARYING。您需要结合使用 TEMP_EXTRACT_VARYING 和 TEMP_EXTRACT_LENGTH_PREFIX。