定义外部表

要定义外部表,需要使用 SQL 语句来描述数据文件,定义表,然后指定要装入或卸载的数据。

要设置装入和卸载任务,需要发出以下一系列 SQL 语句:
  • CREATE EXTERNAL TABLE,用于描述要装入或卸载的数据文件
  • CREATE TABLE,用于定义要装入的表
  • INSERT...SELECT,用于执行装入和卸载

以下步骤概述装入过程:

  1. CREATE EXTERNAL TABLE 语句描述各个外部文件的位置和外部数据的格式,其位置可以是磁盘或来自管道(磁带机或直接网络连接)。以下示例描述的是 CREATE EXTERNAL TABLE 语句:
    CREATE EXTERNAL TABLE emp_ext
    ( name CHAR(18) EXTERNAL CHAR(18),
    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")
        );
  2. CREATE TABLE 语句定义要装入的表。以下样本 CREATE TABLE 语句定义 employee 表:
    CREATE TABLE employee
       FRAGMENT BY ROUND ROBIN IN dbspaces;
  3. INSERT...SELECT 语句用于映射外部数据与数据库表之间的移动。 以下样本 INSERT 语句从外部表装入 employee 表:
    INSERT INTO employee SELECT * FROM emp_ext
要点: 如果指定多个 INSERT...SELECT 语句来卸载数据,那么每个后续 INSERT 语句将覆盖数据文件。 请对数据文件使用绝对路径。

将数据装入数据库时,SELECT 子句的 FROM 部分是 CREATE EXTERNAL 语句定义的外部表。将数据卸载到外部文件时,SELECT 子句控制从数据库检索数据。

TEMP 表不同,外部表在删除之前会在目录中保留定义。创建外部表时,可保存数据的外部描述,以便复用。将表卸载为 GBase 8s 内部数据表示法后,此操作特别有用,因为稍后可使用相同的外部表描述来重新装入这些数据。

外部表定义中包含定义外部数据文件中的数据所需的全部信息,如下所示:
  • 外部数据中的字段的描述。
  • DATAFILES 子句。
    该子句指定:
    • 数据文件是位于磁盘上还是命名管道上。
    • 文件的路径名。
  • FORMAT 子句。

    该子句指定外部数据文件中的数据格式化类型。数据库服务器转换若干数据格式的外部数据,这些格式包括定界和固定 ASCII,以及 GBase 8s 内部格式。

  • 影响数据格式的任何全局参数。

如果将外部表直接映射到定界格式的内部数据库表中,可使用 CREATE EXTERNAL TABLE 语句定义列,并添加子句 SAMEAS 内部表,而无需显式枚举列。