如何编写定界符格式的 dbload 命令文件

命令文件必须包含所需的元素,其中包括定界符。

以下示例中的 FILE 语句将 stock.unl 数据行描述为包含六个字段,每个字段以竖条 (|) 作为定界符进行分隔。

FILE stock.unl DELIMITER '|' 6;
INSERT INTO stock;

两个连续的定界符定义了一个空字段。作为预防措施,您可紧接在标志每个数据行结束的换行字符前面放置一个定界符。如果数据行的最后字段有数据,那么必须使用定界符。如果您省略此定界符将导致错误。

将 FILE 语句与以下示例中出现在输入文件 stock.unl 中的数据行进行比较。(由于最后的字段后面没有跟定界符,所以如果任何数据行以空字段结束,那么都将导致错误。)
1|SMT|baseball gloves|450.00|case|10 gloves/case
2|HRO|baseball|126.00|case|24/case
3|SHK|baseball bat|240.00|case|12/case

示例 INSERT 语句只包含需要的元素。由于省略了列的列表,INSERT 语句默认要将值插入 stock 表中的每个字段中。由于省略了 VALUES 子句,INSERT 语句默认在最新的 FILE 语句中定义了每个字段的输入值。此 INSERT 语句是有效的,因为 stock 表包含六个字段,与 FILE 语句定义的值数量相对应。

以下示例显示了从此 INSERT 语句插入到 stock 中的第一个数据行。
字段
f01 stock_num 1
f02 manu_code SMT
f03 描述 baseball gloves
f04 unit_price 450.00
f05 unit case
f06 unit_descr 10 gloves/case
以下示例中的 FILE 和 INSERT 语句演示了更加复杂的 INSERT 语句语法:
FILE stock.unl DELIMITER '|' 6;
INSERT INTO new_stock (col1, col2, col3, col5, col6)
      VALUES (f01, f03, f02, f05, 'autographed');
在此示例中,VALUES 子句使用 dbload 自动指定的字段名称。您必须使用字母 f 后跟数字来引用自动指定的字段名称:f01f02f10f100f999f1000 等等。所有其他格式都是不正确的。
提示: 前九个字段必须包含零:f01、f02、...、f09。

用户更改了列名、数据的顺序以及新的 stock 表中 col6 的意义。由于 new_stock 中的第四列 (col4) 未在列列表中进行命名,所以新数据行在 col4 位置包含空值(假定该列允许空值)。如果没有为 col4 指定缺省值,插入值将为空值。

下表显示了从此 INSERT 语句插入到 new_stock 中的第一个数据行。

col1 1
col2 baseball gloves
col3 SMT
col4 null
col5 case
col6 autographed