在非缺省的语言环境中的 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 用户指南。
卸载字符列
在包含 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 有下列之一的格式:
- 对于 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
例如,如果 CLOB 值占据整个文件 /usr/apps/clob9ce7.318,则在 UNLOAD TO 文件中,CLOB 值显示如下:
|/usr/apps/clob9ce7.318|
对于支持多字节代码集的语言环境,请确信接收字符数据的任何列的声明的大小(以字节为单位)足够大,可以存储整个数据字符串。对于某些语言环境,这可需要高达数据字符串中逻辑字符数目的 4 倍。
数据库服务器为 CLOB 数据处理任何需要的代码集转换。要获取更多信息,请参阅 GBase 8s GLS 用户指南。