本节中的示例显示使用外部表加载和卸装数据的不同方法。
以下是 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 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;
以下示例创建了一个名为 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;
下一示例创建了名为 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
(
"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"
)