返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBA-01BR-0005
错误码
错误标识
错误信息
GBA-01BR-0005

connect gbase error
错误出现原因
连接gbase 库失败
分析与建议
检查网络连接,server 状态

使用 UNLOAD 语句来将通过 SELECT 语句检索到的行写到操作系统文件。
UNLOAD 语句是对 SQL 的 ANSI/ISO 标准的扩展。
语法
仅 DB-Access 支持 UNLOAD 语句。


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1113
元素
描述
限制
语法
delimiter 指定在 filename 文件
中的字段定界符字符的
加引号的字符串
请参阅 DELIMITER 子

引用字符串
filename
要接收这些行的操作系
统文件。缺省的
pathname 是当前的目
录。
请参阅 UNLOAD TO 文
件。
引用字符串
variable
包含有效的 SELECT 语
句的文本的主变量
必须已被声明为字符数
据类型
特定于语言
用法
重要: 仅随同 DB-Access 使用 UNLOAD 语句。
UNLOAD 语句将通过查询检索到的行复制到文件。您必须在 SELECT 语句中指
定的所有列上有 Select 权限。要获取关于数据库级和表级权限,请参阅 GRANT
语句。
您可指定字面的 SELECT 语句,或包含 SELECT 语句的文本的字符变量(请参
阅 SELECT 语句。)
下列示例卸载其 customer.customer_num 的值大于或等于 138 的行,并将它们
写到名为 cust_file 的文件:
UNLOAD TO 'cust_file' DELIMITER '!'
SELECT * FROM customer WHERE customer_num> = 138;
结果输出文件 cust_file 包含两行数据值:
138!Jeffery!Padgett!Wheel Thrills!3450 El Camino!Suite 10!Palo Alto!CA!94306!!
139!Linda!Lane!Palo Alto Bicycles!2344 University!!Palo
Alto!CA!94301!
(415)323-5400
UNLOAD TO 文件
通过 filename 参数指定的 UNLOAD TO 文件接收检索到的行。
您可使用 UNLOAD TO 文件作为对 LOAD 语句的输入。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1114
UNLOAD TO 在缺省的 U.S. English 语言环境中的数据格式
在缺省的语言环境中,在 UNLOAD TO 文件中,数据值有这些格式。
数据类型
输出格式
BOOLEAN
BOOLEAN 值显示为 t 表示 TRUE,或显示为 f 表示 FALSE。
字符
如果字符字段包含定界符,则 GBase 8s 产品自动地用反斜杠
(\)转义它,以防止翻译为特殊字符。在 UNLOAD TO 文件
中,字面的反斜杠字符显示为两个连续的反斜杠字符(\\)。
如果您使用 DB-Access 的 LOAD 语句来将行插入到表内,则
自动地从那个表除去反斜杠。
Collections
卸载的集合的值括在大括号({ })之间,每个元素之间有定
界符。要获取更多信息,请参阅 卸载复杂类型。
DATE
DATE 值表示为 mm/dd/yyyy (或数据库语言环境的缺省的格
式),在此,mm 为月份(January = 1,依此类推),dd 为
日期,yyyy 为年份。如果您已设置了 GL_DATE 或 DBDATE 环
境变量,则 UNLOAD 语句为 DATE 值使用指定的数据格式。
DATETIME、
INTERVAL
字面的 DATETIME 和 INTERVAL 值显示为数字和定界符,不带
有关键字限定符,以缺省的格式 yyyy-mm-dd hh:mi:ss.fff。
省略声明的精度之外的时间单位。如果设置 GL_DATETIME 或
DBTIME 环境变量,则 DATETIME 值以指定的格式显示。
DECIMAL、
MONEY
不带有主要货币符号的卸载的值。在缺省的语言环境中,逗号
(,)是千分隔符,而句号(.)是小数分隔符。如果设置
DBMONEY,则对于 MONEY 值,UNLOAD 使用它的指定的分隔符
和货币格式。
NULL
NULL 显示为在其间不带有字符的两个定界符。
数值
值显示为前面没有空格的文字。对于 BIGINT、INTEGER、INT8
和 SMALLINT 数据类型,零显示为 0,对于 MONEY、FLOAT、
SMALLFLOAT 和 DECIMAL 数据类型,零显示为 0.0。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1115
数据类型
输出格式
ROW 类型(命
名的和未命名
的)
ROW 类型将它的值括在圆括号之间,且以字段定界符分隔每一
元素。要获取更多信息,请参阅 卸载复杂类型。
简单大对象
(TEXT、
BYTE)
直接将 TEXT 和 BYTE 列卸载到 UNLOAD TO 文件内。BYTE 值
出现在 ASCII 十六进制表中,不带有添加的空白或换行符。
要获取更多信息,请参阅 卸载简单大对象。
智能大对象
(CLOB、
BLOB)
将 CLOB 和 BLOB 列卸载到客户端计算机上的单独的操作系统
文件(对于每一列)内。UNLOAD TO 文件中的 CLOB 或 BLOB
字段包含此文件的名称。要获取更多信息,请参阅 卸载智能
大对象。
用户定义的数
据类型
(opaque 类
型)
Opaque 类型必须定义有 export( ) 支持函数。它们需要特殊
的处理来从 opaque 数据类型的内部格式复制到 UNLOAD TO
文件格式。对于二进制格式的数据,可能还需要
exportbinary( ) 支持函数。UNLOAD TO 文件中的数据可能对
应于 export( ) 或 exportbinary( ) 支持函数返回的格式。
在非缺省的语言环境中的 UNLOAD TO 数据格式
在非缺省的语言环境中,DATE、DATETIME、MONEY 和数值列值有语言环境
对这些数据类型支持的格式。要获取更多信息,请参阅 GBase 8s GLS 用户指
南。要获取更多关于 DBDATE、DBMONEY 和 DBTIME 环境变量的信息,请
参考 GBase 8s SQL 参考指南。
在使用非缺省的语言环境的数据库中,如果 GL_DATETIME 环境变量有非缺省
的设置,则在 UNLOAD 语句可正确地将本地化的 DATETIME 值正确地从数据
库表,或从视图,或从通过 EXTERNAL TABLE 语句定义的表对象卸载之前,必
须将 USE_DTENV 环境变量设置为 1。要获取更多关于 GL_DATETIME、
GL_DATE 和 USE_DTENV 环境变量的信息,请参考 GBase 8s GLS 用户指
南。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1116
卸载字符列
在包含 VARCHAR 或 NVARCHAR 列的卸载文件中,在 VARCHAR、
LVARCHAR 或 NVARCHAR 字段中保留结尾空格。当卸载 CHAR 或 NCHAR
列时,丢弃这些结尾空格。
对于 CHAR、VARCHAR、NCHAR 和 NVARCHAR 列,空字符串(长度为
零,不包含字符的数据字符串)出现在 UNLOAD TO 文件中,为四个字节 "|\
|"(定界符、反斜杠、空格、定界符)。
GBase 8s 数据库服务器的一些较早版本使用了 "||"(连续的定界符)来表示
LOAD 和 UNLOAD 操作中的空字符串。然而,在此版本中,"||" 仅表示
CHAR、VARCHAR、LVARCHAR、NCHAR 和 NVARCHAR 列中的 NULL
值。
卸载简单大对象
数据库服务器将 BYTE 和 TEXT 值直接写到 UNLOAD TO 文件内。以十六进
制转储格式写 BYTE 值,无添加的空格和换行字符。因此,包含 BYTE 数据的
UNLOAD TO 文件的逻辑长度可能长且难以打印和编辑。
如果您正在卸载包含简单大对象数据类型的文件,请不要使用在 UNLOAD TO
文件中可能作为定界符出现在 BYTE 或 TEXT 值中的那些字符。另请参阅
DELIMITER 子句 部分。
数据库服务器为 TEXT 数据处理任何需要的代码集转换,请参阅 GBase 8s GLS
用户指南。
如果您正在卸载包含简单大对象数据类型的文件,则将小于 10 KB 的对象临时地
存储在内存中。您可以 DBBLOBBUF 环境变量将 10 KB 设置调整到较大的设
置。将大于缺省的或 DBBLOBBUF 设置的 BYTE 或 TEXT 值存储在临时文件
中。要获取关于 DBBLOBBUF 的附加信息,请参阅 GBase 8s SQL 参考指南。
卸载智能大对象
数据库服务器为每一列将智能大对象(从BLOB 或 CLOB 列)卸载到单独的操
作系统文件内,与 UNLOAD TO 文件在客户端计算机上的同一个目录中。 将同
一列中所有智能 blob 存储在单个文件中。filename 有下列之一的格式:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1117

对于 BLOB 值: blob########

对于 CLOB 值: clob########
在前面的格式中,符号(#)表示该文件中第一个智能大对象的唯一十六进制智能
大对象的位数。智能大对象标识符的数字的最大数目为 17。然而,大多数智能大
对象可能有更少位数的标识符。
当数据库服务器卸载第一个智能大对象时,它以智能大对象的十六进制标识符来
创建适当的 BLOB 或 CLOB 客户端文件。如果在同一列中出现附加的智能大对
象值,则数据库服务器将它们的值写到同一文件,并对于该文件中的每一 BLOB
或 CLOB 值,在 UNLOAD TO 文件(*.unl)中罗列 sbspace、chunk 和页编
号,以及智能大对象标识符。
下列示例展示来自同一列的两个智能大对象值的 UNLOAD TO 文件条目:
Object # 1
Space Chunk Page = [5,6,3] Object ID = 1192071051

Object #2
Space Chunk Page = [5,6,4] Object ID = 1192071050

both rows unloaded
在 UNLOAD TO 文件中,BLOB 或 CLOB 列值以此格式出现:
start_off,length,client_path
在此, start_off 是在客户端文件内智能大对象的开始偏移量(以十六机制格
式),length 是 BLOB 或 CLOB 值的长度(以十六进制),client_path 是
客户端文件的 pathname。在这些值之间不可出现空格。 例如,如果 CLOB 值为
512 字节长,且在 /usr/apps/clob9ce7.318 文件中的偏移量为 256,则在
UNLOAD TO 文件中,CLOB 值显示如下:
|100,200,/usr/apps/clob9ce7.318|
如果 BLOB 或 CLOB 列值占据整个客户端文件,则在 UNLOAD TO 文件中,
CLOB 或 BLOB 列值显示如下:
client_path

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1118
例如,如果 CLOB 值占据整个文件 /usr/apps/clob9ce7.318,则在 UNLOAD
TO 文件中,CLOB 值显示如下:
|/usr/apps/clob9ce7.318|
对于支持多字节代码集的语言环境,请确信接收字符数据的任何列的声明的大小
(以字节为单位)足够大,可以存储整个数据字符串。对于某些语言环境,这可
需要高达数据字符串中逻辑字符数目的 4 倍。
数据库服务器为 CLOB 数据处理任何需要的代码集转换。要获取更多信息,请参
阅 GBase 8s GLS 用户指南。
卸载复杂类型
在 UNLOAD TO 文件中,复杂数据类型的值显示如下:

以适当的构造函数(MULTISET、LIST、SET)引入集合,以逗号分隔的
它们的元素括在大括号({ })中:
constructor{val1 , val2 , ... }
例如,要从 SET (INTEGER NOT NULL) 数据类型的列卸载 SET 值 {1,
3, 4},UNLOAD TO 文件的相应的字段显示如下:
|SET{1 , 3 , 4}|

通过 ROW 构造函数引入 ROW 类型(命名的和未命名的),且将它们
的字段括在圆括号之间,并以逗号分隔:
ROW(val1 , val2 , ... )
例如,要卸载 ROW 值 (1, 'abc'),UNLOAD TO 文件的对应的字段
显示如下:
|ROW(1 , abc)|
DELIMITER 子句
使用 DELIMITER 子句来指定分隔在输出文件中的行中每一列中包含的数据的定
界符。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1119
如果您省略此子句,则 DB-Access 检查 DBDELIMITER 环境变量的设置。如果尚
未设置 DBDELIMITER,则缺省的定界符是管道(|)符号。您可指定 TAB(CTRL-
I)或空格(ASCII 32)作为定界符,但在任何语言环境中,下列字符都不是有效
的定界符:

反斜杠(\)

换行字符(CTRL-J)

十六进制数字(0 至 9,a 至 f,A 至 F)
反斜杠(\)不是有效的字段分隔符或记录定界符,因为它是缺省的转义字符,表
明数据中的下一个字符是文字字符,而不是特殊字符。然而,如果您通过设置
DEFAULTESCCHAR 配置参数或 DEFAULTESCCHAR 会话环境选项来更改缺
省的转义字符,则您可使用反斜杠作为字段分隔符。
下列 UNLOAD 语句指定分号(;)作为定界符:
UNLOAD TO 'cust.out' DELIMITER ';'
SELECT fname, lname, company, city FROM customer;

SQLSpecialColumns 检索有关列的信息。
SQLSpecialColumns 检索有关指定表的以下信息:

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 240 -

l
唯一标识表中的一行的最佳列集
l
通过事务更新行中的值时,自动更新的列
下表描述了 SQLSpecialColumns 的 SQLSTATE 和错误值。
SQLSTATE
错误值
错误消息
01000
-11001
General warning
08S01
-11020
Communication-link failure
24000
-11031
Invalid cursor state
S1000
-11060
General error
S1001
-11061
Memory-allocation failure
S1008
-11065
Operation canceled
S1010
-11067
Function-sequence error
S1090
-11071
Invalid string or buffer length
S1097
-11078
Column type out of range
S1098
-11079
Scope type out of range
S1099
-11080
Nullable type out of range
S1C00
-11092
Driver not capable
S1T00
-11094
Time-out expired
S1C00
-11300
SQL_DEFAULT_PARAM not supported
08S01
-11301
A protocol error has been detected. Current connection is
closed.
S1000
-11310
Create and Drop must be executed within a ServerOnly
Connection
S1000
-11320
Syntax error
S1000
-11323
The statement contained an escape clause not supported by
this database driver