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

将数据从 GBase 8s 卸装到外部表
通过创建外部表并将数据插入到该表中,或者从内部表查询数据并将数据插入到外部文件,来卸装数据。
要并行地卸装数据,启动并行运行的查询,并将其输出结果写到多个文件中。该卸装任务使用循环技术均衡输出文件汇总的行数。
卸载到定界文件
您可以将表中的数据卸载到定界的 ASCII 文本文件中,如下所示:
CREATE EXTERNAL TABLE emp_ext
SAMEAS employee
USING (
DATAFILES (“DISK:/work2/mydir/emp.dat”)
);
INSERT INTO emp_ext SELECT * FROM employee;
定界文件缺省为 ASCII 。
卸载到 GBase 8s 数据文件
要将 employee 表卸载到 GBase 8s 内部格式的表,请使用类似的下列语句:
SELECT * FROM employee
WHERE hiredate > “1/1/1996”
INTO EXTERNAL emp_ext
USING (
FORMAT ‘GBASEDBT’,
DATAFILES (“DISK:/work2/mydir/emp.dat”)
);
因为输出文件使用 GBase 8s 内部表示法,所以您需要在 USING 子句中指定 FORMAT ‘GBASEDBT’ 选项。(缺省为定界 ASCII 格式。)
卸载到固定文本文件
可将数据库的数据卸载到固定格式文件。
以下 SQL 语句将以固定文本格式的 employee 表卸载到 emp_ext 外部表中:
CREATE EXTERNAL TABLE emp_ext
( name CHAR(18) EXTERNAL CHAR(20),
hiredate DATE EXTERNAL CHAR(10),
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;
这些语句创建了有 20 个字符位置的第一个字段,10 个字符位置的第二字段等等的固定文本文件。因为通过 SELECT 语句选择行,所以您可以任何您希望的方式格式化该 SELECT 列表。
向固定文本文件添加行结束符
您可以向固定文本文件的每行添加行结束符,以将文件用于其它应用程序。
如果您以固定文本格式写文本,一行写一个记录是有帮助的。行结束符使得数据更清晰易读。如果您使用缺省的定界格式,则会自动添加行结束符。然而,对于固定格式卸载,需要在您的记录中添加行结束符。例如:考虑具有以下结构的表:
TABLE sample (
lastname CHAR(10),
firstname CHAR(10),
dateofbirth DATE);
该表包含以下值:
Adams Sam 10-02-1957
Smith John 01-01-1920
接下来,考虑以下结构的外部表:
CREATE EXTERNAL TABLE sample_ext (
lastname CHAR(10) EXTERNAL CHAR(10),
firstname CHAR(10) EXTERNAL CHAR(10),
dateofbirth DATE EXTERNAL CHAR(12));
不带行结束符卸载 sample_ext 会产生以下输出:
Adams Sam 10-02-1957 Smith John 01-01-1920
您可以通过使用程序或脚本添加行结束符,或者在 SELECT 语句中添加换行字段。
使用程序或脚本
要添加行结束符,您可以将固定长度的记录写到数据文件中,然后用程序或脚本修改该数据文件。
例如:您可以用 C 程序查找每一记录的长度,定位每一行的末尾,然后添加行结束符。
在 SELECT 语句中添加换行字段
您可以使用外部表卸载在您内部表中的换行符。
要添加行结束符,请从含有换行符的表中查询最终值,如下所示:
1.创建一个只包含换行字符的文件。
echo “” > /tmp/cr.fixed
2.创建一个存储该换行值的内部表,在卸载数据时使用该表。
CREATE TABLE dummyCr (cr CHAR(1));
3.创建外部表以卸载换行值。
CREATE EXTERNAL TABLE x_cr (cr CHAR(1) EXTERNAL CHAR(1))
USING (DATAFILES (“DISK:/tmp/cr.fixed”), FORMAT ‘FIXED’);
4.加载该外部表到内部表 dummyCr 中。
INSERT INTO dummyCr SELECT * FROM x_cr;
该内部表,dummyCr ,现在包含一个行结束符,您可以在 SELECT 语句中既使用它进行卸载。
1.要将内部表的数据卸载到外部表,请创建带有行结束符 EXTERNAL CHAR 的外部表。
CREATE EXTERNAL TABLE sample_ext
(
lastname CHAR(10) EXTERNAL CHAR(10),
firstname CHAR(10) EXTERNAL CHAR(10),
dateofbirth DATE EXTERNAL CHAR(12),
eol CHAR(1) EXTERNAL CHAR(1))
USING (DATAFILES …), FORMAT ‘FIXED’);
2.将从内部表和 dummyCr 表的查询用于创建拥有被行结束符分隔的行的输出文件。
INSERT INTO sample_ext(lastname, firstname, dateofbirth, eol)
SELECT a.lastname, a.firstname, a.dateofbirth, b.cr
FROM mytable a, dummyCr b;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值