将 dbload 实用程序用于命名行类型

将命名行类型用于 dbload 实用程序的过程与将其他复杂数据类型用于 dbload 的过程稍有不同,因为命名行类型实际上是用户定义的数据类型。

假定您具有名称为 person 的表,其包含一个带命名行类型的列。再假定 person_t 命名行类型包含六个字段:nameaddresscitystatezipbdate

以下语法显示了如何创建在本示例中使用的命名行类型和表:
CREATE ROW TYPE person_t 
   ( 
            name VARCHAR(30) NOT NULL, 
            address VARCHAR(20), 
            city VARCHAR(20), 
            state CHAR(2), 
            zip VARCHAR(9), 
            bdate DATE 
   ); 
CREATE TABLE person of TYPE person_t;

要为命名行类型(或为任何用户定义的数据类型)装入数据

  1. 使用 UNLOAD 语句将表卸载到输入文件。在本示例中,输入文件将命名行类型看成六个单独的字段:
    Brown, James|13 First St.|San Francisco|CA|94070|01/04/1940|
    Karen Smith|1820 Elm Ave #100|Fremont|CA|94502|01/13/1983| 
  2. 使用 dbschema 实用程序捕捉表模式和行类型。必须使用 dbschema -u 选项来获得命名行类型。
    dbschema -d stores_demo -u person_t > schema.sql
    dbschema -d stores_demo -t person > schema.sql
  3. 使用 DB-Access 在新数据库中重新创建 person 表。

    有关详细步骤,请参阅使用 dbschema 输出作为 DB-Access 输入

  4. 创建 dbload 命令文件。此 dbload 命令文件将两行插入新数据库中的 person 表。
    FILE person.unl DELIMITER '|' 6; 
    INSERT INTO person;
    

    dbload 示例显示了如何将新数据行插入 person 表。该 INSERT 语句和 dbload 命令文件中的行数必须匹配:

    FILE person.unl DELIMITER '|' 6;
       INSERT INTO person
       VALUES ('Jones, Richard', '95 East Ave.',
                          'Philadelphia', 'PA',
       '19115',
       '03/15/97');
  5. 运行 dbload 命令:
    dbload -d newdb -c uds_command -l errlog
    
提示: 要找到包含命名行类型的卸载表中的字段数,可计算每个竖条 (|) 定界符之间的字段数。