用于将数据从数据源卸载到文件中。
UNLOAD data-source { TO filename | INTO FILE filename | INTO CLIENT FILE client-filename | INTO VARIABLE variable-name } [ unload-option ... ]
data-source [ FROM ] [ TABLE ] [ owner.]table-name | [ FROM ] [ MATERIALIZED VIEW ] [ owner.]materialized-view-name | select-statement
filename : string | variable
client-filename : string | variable
unload-option : APPEND { ON | OFF } | BYTE ORDER MARK { ON | OFF } | { COMPRESSED | NOT COMPRESSED } | COLUMN DELIMITED BY string | DELIMITED BY string | ENCODING encoding | { ENCRYPTED KEY 'key' [ ALGORITHM 'algorithm' ] | NOT ENCRYPTED } | ESCAPE CHARACTER character | ESCAPES { ON | OFF } | FORMAT { TEXT | BCP } | HEXADECIMAL { ON | OFF } | ORDER { ON | OFF } | QUOTE string | QUOTES { ON | OFF } | ROW DELIMITED BY string
encoding : string
TO 子句 要将数据卸载到的文件的名称。filename 路径是相对于数据库服务器启动目录的路径。如果该文件不存在,则会进行创建。如果该文件已存在,则除非另外指定了 APPEND ON,否则该文件会被覆盖。
INTO CLIENT FILE 子句 客户端计算机上用于存放所卸载数据的文件。如果该文件不存在,则会进行创建。如果该文件已存在,则除非另外指定了 APPEND ON,否则该文件会被覆盖。将相对于客户端应用程序的当前工作目录来解析此路径。
INTO VARIABLE 子句 要将数据卸载到的变量。该变量必须已存在,且必须为 CHAR、NCHAR 或 BINARY 类型。APPEND 选项可以使卸载的数据附加到变量的当前内容。
APPEND 子句 APPEND 为 ON 时,卸载的数据将附加到指定文件的末尾。APPEND 为 OFF 时,卸载的数据将替换指定文件的内容。缺省情况下,APPEND 为 OFF。如果指定了 COMPRESSED 或 ENCRYPTED 子句,则不能指定此子句,如果要附加的文件已进行压缩或加密,则也不能使用此子句。
BYTE ORDER MARK 子句 此子句用于指定是否应写入字节顺序标记 (BOM)。缺省情况下,此选项为 ON,只要卸载的目标文件为本地文件或客户端文件。当 BYTE ORDER MARK 选项为 ON 且 ENCODING 为 UTF-8 或 UTF-16 时,则写入 BOM。如果 BYTE ORDER MARK 为 OFF,则不卸载 BOM。
COMPRESSED 子句 指定是否压缩数据。缺省值为 NOT COMPRESSED。如果想要附加到该数据 (APPEND ON),则不能对其进行压缩。
COLUMN DELIMITED BY 和 DELIMITED BY 子句 用于列间的字符串。缺省列分隔符是逗号。可通过提供字符串(最大长度 225 字节)来指定其它列分隔符。
ENCODING 子句 所有的数据库数据都从数据库字符编码转换为指定的 CHAR 或 NCHAR 编码。未指定 ENCODING 时,使用数据库的 CHAR 编码。
如果在卸载操作期间发生转换错误,将根据 on_charset_conversion_failure 选项的设置进行报告。
以下示例使用 UTF-8 字符编码卸载数据:
UNLOAD TABLE mytable TO 'mytable_data_in_utf8.dat' ENCODING 'UTF-8'; |
指定 BYTE ORDER MARK 子句,在数据中包括字节顺序标记。
ENCRYPTED 子句 指定是否对数据加密。如果指定 NOT ENCRYPTED(缺省值),则不对数据加密。如果指定带密钥但无算法的 ENCRYPTED KEY,则使用 AES128 和指定的密钥对数据加密。如果指定带密钥和算法的 ENCRYPTED KEY,则使用指定的密钥和算法对数据加密。算法可以是 CREATE DATABASE 语句所接受的任何算法。您不能指定简单加密。
如果想要附加到该数据 (APPEND ON),则不能对其进行加密。
ESCAPES 子句 当 ESCAPES 设置为 ON(缺省)时,数据库服务器写入转义序列。换行符可以表示为组合 \n,其它字符可以作为十六进制 ASCII 代码(如使用 \x09 代替制表符)包括在数据中。两个连续的反斜线字符 ( \\ ) 用于表示单个反斜线。反斜线以及后面的任何字符(n、x、X 或 \ 除外)用于表示两个单独的字符。例如,\q 插入反斜线和字母 q。建议为转义字符指定的字符串长度不长于一个多字节字符。
FORMAT 子句 以 TEXT 格式或 BCP 输出格式输出数据。如果选择 TEXT,则将输出行作为文本字符写入,每个输出行占一行,值由列分隔符字符串分隔。如果选择 BCP,包括 BLOB 在内的数据将导出为 BCP 输入文件,以便和 Adaptive Server Enterprise 一起使用。缺省格式为 TEXT。
HEXADECIMAL 子句 缺省情况下,HEXADECIMAL 为 ON。二进制列值以 0xnnnnnn... 格式写入,其中 0x 是零后跟一个 x,每个 n 都是一个十六进制数。处理多字节字符集时,使用 HEXADECIMAL ON 很重要。
HEXADECIMAL 子句只能与 FORMAT TEXT 子句配合使用。
ESCAPE CHARACTER 子句 此子句用于指定数据中使用的转义字符。以十六进制代码和符号写入的字符其缺省转义字符为反斜线 (\),例如 \x0A 是换行符。使用 ESCAPE CHARACTER 子句可以对此进行更改。例如,要将感叹号用作转义字符,应输入:
ESCAPE CHARACTER '!' |
建议为转义字符指定的字符串长度不长于一个多字节字符。
ORDER 子句 如果 ORDER 设置为 ON(缺省值),则导出的数据按聚簇索引(如果有)排序。如果没有聚簇索引,则导出的数据按主键值排列。如果 ORDER 设置为 OFF,则数据导出顺序与不使用 ORDER BY 子句从表中选择数据时的顺序相同。ORDER 设置为 ON 时,导出速度较慢。不过,由于索引步骤的简单性,使用 LOAD TABLE 语句时重装速度较快。
对于 UNLOAD select-statement,ORDER 子句会被忽略。但仍然可以在 SELECT 语句中指定 ORDER BY 子句来对数据进行排序。
QUOTE 子句 QUOTE 子句仅适用于 TEXT 数据;string 放置于字符串值的两边。缺省值为单引号(撇号)。
QUOTES 子句 当 QUOTES 设置为开启(缺省)时,所有导出字符串的两端都会放置一个引号字符(缺省为单个引号,即撇号)。
ROW DELIMITED BY 子句
此子句可用于指定表示记录结束的字符串。缺省的分隔符字符串是换行符 (\n)。然而,它可以是最大长度为 255 个字节的任何字符串;例如,... ROW DELIMITED BY '###' ...
。如果您要指定以制表符分隔的值,可使用制表符 (9) 的十六进制转义序列,... ROW DELIMITED BY '\x09' ...
。如果分隔符字符串包含 \n,则它与 \r\n 或 \n 匹配。
UNLOAD select-statement 语句允许将来自 SELECT 语句的数据导出到以逗号分隔的文件中。除非 SELECT 语句包含 ORDER BY 子句,否则结果集不排序。
UNLOAD TABLE 语句允许从数据库表或实例化视图到文件的高效批量导出。UNLOAD TABLE 语句比 Interactive SQL 的 OUTPUT 语句效率更高,并且可从任何客户端应用程序调用。
数据库服务器或客户端应用程序(具体取决于指定的是 INTO FILE 还是 INTO CLIENT FILE)必须具有写入指定文件的操作系统权限。
当卸载二进制数据类型的表列时,UNLOAD TABLE 会以 \xnnnn 格式写入十六进制字符串,其中 n 是一个十六进制数字。
当卸载并重装有代理表的数据库时,您必须创建一个外部登录来将本地用户映射到远程用户,即使该用户在本地和远程数据库中的口令相同也是如此。如果您没有外部登录,那么重装有可能因为您无法连接到远程服务器而失败。
当卸载到变量 (INTO VARIABLE) 时,输出会按如下方式转换为一个字符集:
CHAR 以 CHAR 编码写入到变量。ENCODING 子句必须与 CHAR 编码匹配。
NCHAR 以 NCHAR 编码写入到变量。ENCODING 子句必须与 NCHAR 编码匹配。
BINARY 以 BINARY 编码写入到变量。ENCODING 子句必须与 BINARY 编码匹配;否则将使用 CHAR 编码。
如果选择对卸载数据进行压缩和加密,则会首先进行压缩。
UNLOAD TABLE 会在整个表或实例化视图上放置一个独占锁。
在执行此语句期间,可以请求进度消息。
也可以使用 Progress 连接属性确定语句的执行进度。
要保留日期值的最大精度,可将 date_format 设置为 YYYY-MM-DD。
要保留 TIMESTAMP 值的最大精度,可将 timestamp_format 设置为 YYYY-MM-DD HH:NN:SS.SSSSSS。
要保留 TIMESTAMP WITH TIMEZONE 值的最大精度,可将 timestamp_with_time_zone_format 设置为 YYYY-MM-DD HH:NN:SS.SSSSSS+HH:NN。
卸载到变量时,不需要任何权限(除访问数据源所需的常规权限外)。
执行 UNLOAD 语句所需的权限取决于数据库服务器的 -gl 选项,如下所示:
如果 -gl 选项设置为 ALL,则必须对 UNLOAD 语句中引用的表具有 SELECT 权限。
如果 -gl 选项设置为 DBA,则您必须具有 DBA 权限。
如果 -gl 选项设置为 NONE,则不允许执行 UNLOAD。
当写入到客户端计算机的文件中时:
需要 WRITECLIENTFILE 权限。
需要对写入的目录具有写权限。
必须启用 allow_write_client_file 数据库选项。
必须启用 write_client_file 受保护的功能。
无。查询在当前隔离级别上执行。
SQL/2008 服务商扩充。
以下示例将 Products 表中的内容卸载到 UTF-8 编码文件 productsT.dat 中:
UNLOAD TABLE Products TO 'productsT.dat' ENCODING 'UTF-8'; |
以下示例创建一个名为 @myProducts 的变量,然后将 Products.Name 列卸载到该变量:
CREATE VARIABLE @myProducts LONG VARCHAR; UNLOAD SELECT NAME FROM Products INTO VARIABLE @myProducts; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |