您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

提取选项

使用提取选项,您可以从标准界面中重定向 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字符串_ TEMP_EXTRACT_GZ_COMPRESSION_LEVEL1-96 TEMP_EXTRACT_LENGTH_PREFIX0、1、2、40 TEMP_EXTRACT_MAX_PARALLEL_DEGREE2-6416 TEMP_EXTRACT_NAME字符串''有 8 个选项:TEMP_EXTRACT_NAME1 到 Temp_Extract_Name8。 TEMP_EXTRACT_NULL_AS_EMPTYON 或 OFFOFFTEMP_EXTRACT_NULL_AS_ZEROON 或 OFFOFFTEMP_EXTRACT_QUOTE字符串''TEMP_EXTRACT_QUOTESON 或 OFFOFFTEMP_EXTRACT_QUOTES_ALLON 或 OFFOFFTEMP_EXTRACT_ROW_DELIMITER字符串''TEMP_EXTRACT_SIZE千字节整数 (KB)0 TEMP_EXTRACT_SIZE因平台而异: AIX 和 HP-UX:0 – 64 GBSun Solaris:0 – 512 GBWindows:0 – 128 GBLinux:0 – 512 GB0有 8 个选项:TEMP_EXTRACT_SIZE1 到 TEMP_EXTRACT_SIZE8。 TEMP_EXTRACT_SWAPON 或 OFFOFFTEMP_EXTRACT_VARYINGON 或 OFFOFF 

名称和大小

如果大文件系统(如 JFS2)所支持的文件大小大于缺省值,请将 TEMP_EXTRACT_SIZE 设置为该文件系统允许的最大值。例如,要支持 1 TB 设置选项,请输入:

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 选项不兼容。如果您尝试限制提取追加输出文件的大小,SAP IQ 将报告错误。

如果要提取到单个磁盘文件或单个指定管道,请将选项 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 的行为如下:

  • 如果为用户将 TEMP_EXTRACT_DIRECTORY 设置为字符串 FORBIDDEN(不区分大小写),则禁止该用户执行数据提取。如果试图执行此操作,将导致出现错误:您无权执行提取。

  • 如果为 TEMP_EXTRACT_DIRECTORY 角色将 PUBLIC 设置为 FORBIDDEN,则任何人均不能运行数据提取。

  • 如果将 TEMP_EXTRACT_DIRECTORY 设置为有效目录路径,则临时提取文件将放置到该指定目录中,并覆盖在 TEMP_EXTRACT_NAME 选项中的路径。

  • 如果将 TEMP_EXTRACT_DIRECTORY 设置为无效目录路径,则会发生错误:文件不存在。文件:<无效路径>。

  • 如果 TEMP_EXTRACT_DIRECTORY 为空,则根据在 TEMP_EXTRACT_NAME 中的相应指定,将临时提取文件放置到目录中。如果 TEMP_EXTRACT_NAME 中未指定任何路径,缺省情况下,提取文件将放置到服务器启动目录中。

    提取类型

    数据提取类型包括:

  • 二进制 - 会产生总体为“二进制”格式而每列为“含空字节的二进制”格式的文件。可使用 LOAD TABLE 语句装载文件。

  • 二进制/交换 - 与二进制提取相同,区别是前者用于在其它计算机上以相反的字节排序方式进行装载。

  • ASCII –(缺省)生成文本文件。

    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 平台中)。字符串不带引号。如果这些缺省设置不适用,则更改分隔符,使用:

  • TEMP_EXTRACT_COLUMN_DELIMITER

  • TEMP_EXTRACT_ROW_DELIMITER

  • TEMP_EXTRACT_QUOTE

  • TEMP_EXTRACT_QUOTES

  • TEMP_EXTRACT_QUOTES_ALL

    如果使用的是多字节归类顺序,分隔符必须占 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 时,空值表示为:

  • '0',表示算术类型

  • ' '(空字符串),表示 CHARVARCHAR 字符类型

  • ' '(空字符串),表示日期

  • ' '(空字符串),表示时间

  • ' '(空字符串),表示时间戳

    当 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 提取向文件的 CHARVARCHAR 列所写入的字符数等于列中的字符数,即使该数字小于四也是如此。

    消息记录

    当 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。