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