南大通用GBase8s 常用SQL语句(三十九)

1.1CREATE EXTERNAL TABLE 语句
使用 CREATE EXTERNAL TABLE 语句定义不属于您的数据库的外部源以加载和卸载您数据库的数据。
CREATE EXTERNAL TABLE 语句是实施是 SQL ANSI/ISO 标准的扩展。
语法

元素 描述 限制 语法
table 存储外部数据的表的名称 在当前数据库中的表、视图和同义词的名称中必须是唯一的 标识符
用法
使用外部表从您的数据库加载和卸载数据或者加载和卸载数据到数据库中。还可以使用外部表查询不在 GBase 8s 数据库文本文件中的数据。
语法图的第一部分声明了表的名称并定义了它的列。
The portion that 随 USING 关键字之后的部分标识了当您使用外部表时数据库服务器打开的外部文件,并指定该外部表特征的其它选项。
在执行 CREATE EXTERNAL TABLE 语句后,可以使用 INSERT INTO … SELECT 语句从外部源移动数据,或者移动数据到外边源。有关将查询结果加载到外部表中的更多信息,请参阅 INTO EXTERNAL 子句 章节。
在高可用集群的辅助服务器上不支持 CREATE EXTERNAL TABLE 语句。
如果您包含 IF NOT EXISTS 关键字,而指定名称的外部表已经在当前数据库的 systables 系统目录表中注册过,或者指定的名称是当前数据库中数据库表、视图、顺序对象、或者同义词的标识符时,数据库服务器不采取任何操作(而不是向应用程序发送异常)。
列定义
使用 CREATE EXTERNAL TABLE 已经的列定义段声明新外部表的单个列的名称和数据类型。
列定义

其它选项子句

元素 描述 限制 语法
column 外部表的每一列的列名 对于每一列,必须指定内置数据类型 标识符
data_type 列的数据类型 data_type 可以是任何 GBase 8s 支持的数据类型 数据类型
template 具有与外部表相同结构的现有表 不能是列的子集且与任一列数据类型不同 数据库对象名
size 列大小(以字节表示)。缺省为 1 整数; 1 ≤ size ≤ 32,767 精确数值
null_string 代表 NULL 的值 请参阅定义 NULL 值 引用字符串
使用 SAMEAS 子句
SAMEAS template 子句使用在新表的定义中 template 表的所有的列名称及其数据类型。
您不能对固定格式的文件使用 SAMEAS 子句。
示例
考虑将定界的 ASCII 文本文件加载到具有以下结构的表中:
TABLE employee (
name CHAR(18) NOT NULL,
hiredate DATE DEFAULT TODAY,
address VARCHAR(40),
empno INTEGER);
SQL 语句可使用以下方法将数据加载到 employee 表:
CREATE EXTERNAL TABLE emp_ext
SAMEAS employee
USING (
DATAFILES (“DISK:/work2/mydir/emp.dat”),
REJECTFILE “/work2/mydir/emp.rej”
);
INSERT INTO employee SELECT * FROM emp_ext;
外部表都具有与源表每一列相同的名称、类型和缺省值,因为 CREATE 语句包含 SAMEAS 关键字。缺省的格式是定界的,因此不需要任何格式化关键字。
定义在数据库表中列上的检查约束不会为外部表继承。然而,NOT NULL约束会被外部表继承。
定界文件缺省为 ASCII 。缺省的行定界符是行结束字符,除非您在创建外部表时使用 RECORDEND 关键字定义不同的定界符。(RECORDEND 关键字只对定界格式有效。)
使用 EXTERNAL 关键字
使用 EXTERNAL 关键字给您的拥有一个不同于内部表数据类型的外部表的每一列指定 CHAR 数据类型。
例如,内部表中有一 VARCHAR 列,您想要将其映射到外部表中的 CHAR 列。
必须以固定格式为每一列指定外部类型。除了 BYTE 和 TEXT 列(它们的指定是可选的),您不能为分隔的列指定外部类型。
定义 NULL 值
当从外部源加载或卸载数据时,您可以定义一个解释为 NULL 的值。
对固定格式的外部表,数据库服务器使用 NULL 表示法作为数据加载到数据库中时的解释值,也使用 NULL 表示法作为数据卸载到外部表时将 NULL 值格式为合适的数据类型。
NULL 表示法必须适合外部字段的长度。
操纵固定格式文件中数据
固定格式文件是所有行都具有一样长度的文件。
对于 FIXED 格式的文件,您必须为每一列声明列名和 EXTERNAL 项来设置属性的名称和数目。对于固定格式文件,只允许的数据类型是 CHAR。您可以使用 NULL 关键字指定哪个字符串被诠释为 NULL 值。
DATAFILES 子句
DATAFILES 子句指定当您使用外部表时打开的操作系统文件或管道。
DATAFILES 子句

元素 描述 限制 语法
fixed_path 在外部表的定义中的输入或输出文件的路径名 请参阅随该表之后的注意事项 必须遵循操作系统规则
formatted_path 使用模式匹配字符的格式化的路径名 请参阅随该表之后的注意事项 必须遵循操作系统规则
T数据库服务器不会验证存在于指定的 fixed_path 或 formatted_path 上的任何文件或管道,此指定的管道是打开的,且用户具有存取该文件系统的权限。然而,如果当数据库服务器尝试读或写到外部表时,指定的管道正在被使用,即是打开的,随后外部表上的操作会失败,除非该路径是有效的。
有关 DATAFILES 子句的示例,请参阅外部表示例。
关键字 描述
CLOBDIR 指定存储 CLOB 文件的服务器的目录。
BLOBDIR 指定存储 BLOB 文件的服务器的目录。当创建查询时,在 CLOBDIR 之后的 BLOBDIR 之后,指定 DISK 。如果省略了 BLOBDIR ,则 BLOB 文件存储于 DISK 子句指定的相同的目录。如果 BLOBDIR 和 CLOBDIR 都被省略,则会为 BLOB 或 CLOB 列创建一个新的文件,并将其存储于 DISK 子句指定的目录下。
以下示例中,存储在 /work1/exttab1.dat 中的行拥有位于 /work1/blobdir1 的 BLOBs 和位于 /work1/clobdir1 目录下的 CLOBs 。
存储在 /work1/exttab2.dat 中的行拥有位于 /work1 目录中的 BLOBs 和位于 /work1/clobdir2 目录中的 CLOBs。因为省略了 BLOBDIR 子句,所以 BLOBs 存储在存储 exttab2.dat 的目录中。
存储在 /work1/exttab3.dat 中的行拥有位于 /work1 目录中的 BLOBs 和 CLOBs ,因为 BLOBDIR 和 CLOBDIR 都被省略了。
CREATE EXTERNAL TABLE exttab (
id SERIAL,
lobc CLOB,
lobb BLOB)
USING (DATAFILES(
“DISK:/work1/exttab1.dat;BLOBDIR:/work1/blobdir1;CLOBDIR:/work1/clobdir1”,
“DISK:/work1/exttab2.dat;CLOBDIR:/work1/clobdir2”,
“DISK:/work1/exttab3.dat”),
DELIMITER ‘|’);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值