南大通用GBase8s 常用SQL语句(四十一)

南大通用GBase8s 常用SQL语句(四十一)
外部表示例
本节中的示例显示使用外部表加载和卸装数据的不同方法。
以下是 CREATE EXTERNAL TABLE 语法的示例。在本示例中,创建带有两列且名为 empdata 的外部表。DATAFILES 子句指示数据文件的位置,指定该文件是定界的,指示拒绝文件的位置并指定该拒绝文件包含的错误不能多于 100 个。
CREATE EXTERNAL TABLE empdata
(
empname char(40),
empdoj date
)
USING
(DATAFILES
(
“DISK:/work/empdata.unl”
),
FORMAT “DELIMITED”,
REJECTFILE “/work/errlog/empdata.rej”,
MAXERRORS 100);
使用 SAMEAS 子句创建外部表
SAMEAS template 子句在新表的定义中使用来自 template 表所有的列名称和数据类型。以下示例使用 empdata 表的列名及其数据类型来创建外部表:
CREATE EXTERNAL TABLE emp_ext SAMEAS empdata
USING
(DATAFILES
(
“DISK:/work/empdata2.unl”
),
REJECTFILE “/work/errlog/empdata2.rej”,
DELUXE
);
向外部表中卸装数据
以下示例显示将数据库表的数据加载到外部表所使用的语句。
CREATE EXTERNAL TABLE ext1( col1 int )
USING
(DATAFILES
(
“DISK:/tmp/ext1.unl”
)
);

    CREATE TABLE base (col1 int);
    INSERT INTO ext1 SELECT * FROM base;

还可以按照以下示例使用 SELECT…INTO EXTERNAL 语法卸装数据:
SELECT * FROM base
INTO EXTERNAL emp_target
USING
(DATAFILES
(
“DISK:/tmp/ext1.unl”
)
);
从外部表查询数据将其加载到数据库表
以下示例从外部表查询,且显示了将查询到的数据加载到数据库表的各种方法。
CREATE EXTERNAL TABLE ext1( col1 int )
USING
(DATAFILES
(
“DISK:/tmp/ext1.unl”
)
);

    CREATE TABLE target1 (col1 int);
    CREATE TABLE target2 (col1 serial8, col2 int);
    
    SELECT * FROM ext1;
    SELECT col1,COUNT(*) FROM ext1 GROUP BY 1;
    SELECT MAX(col1) FROM ext1;
    SELECT col1 FROM ext1 a, systables b WHERE a.col1=b.tabid;
    
    INSERT INTO target1 SELECT * FROM ext1;
    INSERT INTO target2 SELECT 0,* FROM ext1;

从数据库表中的将数据卸装到一个使用 FIXED 格式的文本文件中
以下示例创建了一个名为 emp_ext 的外部表,定义了列名及其数据类型,并从使用固定格式的数据库卸装数据。
CREATE EXTERNAL TABLE emp_ext
( name CHAR(18) EXTERNAL CHAR(20),
address VARCHAR(40) EXTERNAL CHAR(40),
empno INTEGER EXTERNAL CHAR(6)
)
USING (
FORMAT ‘FIXED’,
DATAFILES
(
“DISK:/work2/mydir/emp.fix”
)
);

INSERT INTO emp_ext SELECT * FROM employee;
从数据文件将数据加载到使用 FIXED 格式的数据库表中
下一示例创建了名为 emp_ext 的外部表,并从固定格式文件将数据加载到数据库中。
CREATE EXTERNAL TABLE emp_ext
( name CHAR(18) EXTERNAL CHAR(18),
address VARCHAR(40) EXTERNAL CHAR(40),
empno INTEGER EXTERNAL CHAR(6)
)
USING (
FORMAT ‘FIXED’,
DATAFILES
(
“DISK:/work2/mydir/emp.fix”
)
);

INSERT INTO employee SELECT * FROM emp_ext;
在 DATAFILES 子句中使用格式化字符
要处理三个文件,请按照以下示例创建 DATAFILES 子句。
DATAFILES
(
“DISK:/work2/extern.dir/mytbl.%r(1…3)”
)
下列显示了当运行语句时列表是如何展开的:
DATAFILES
(
“DISK:/work2/extern.dir/mytbl.1”,
“DISK:/work2/extern.dir/mytbl.2”,
“DISK:/work2/extern.dir/mytbl.3”
)
将外部表中的加载到 GBase 8s
要加载数据,请定义该外部数据为外部表然后将数据插入到数据库中。
数据库服务器执行 express 方式加载和 deluxe 方式加载。您只能当表类型是 RAW 且不拥有活动的索引时,才能执行 express 方式加载。数据库服务器对这两种加载方式都允许约束检查。
Express 方式在加载期间提供最高的性能。
Deluxe 方式将快速并行加载和索引及唯一约束的评估结合,并且在以下情况中,更有效率:
对于您正在加载的数据量,重建索引的开销太高。
您想要使用从您正在加载表中的已删除行的空的空间。
如果接收外部表的行的表是 STANDARD 表(即,不是由 CREATE TEMP TABLE 或 CREATE RAW TABLE 语句创建的数据库表),则 EXPRESS 关键字没有作用,且该表以 DELUXE 方式加载。当数据库服务器忽略加载操作中的 EXPRESS 关键字时(此处正在接收数据的表不是 RAW 表),它不会发出异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值