这些选项指定定义外部表的其它特征,并定义该表上加载或卸载操作的属性。
num_errors 规范在 unload 任务期间被忽略。
如果未指定 RECORDEND 值,record_delimiter 缺省值为换行符(\n)。要将非打印字符指定为记录定界符或字段定界符,您必须将它编码为 ASCII 字符的八进制表示法。例如 \006 可表示 CTRL-F 。
在 Windows™ 系统上,如果您使用 DB-Access 实用程序或者 dbexport 实用程序加载数据库表到文件中,然后计划使用该文件作为外部表数据文件,则您应当在 CREATE EXTERNAL TABLE 语句中将 RECORDEND 定义为 '\012' 。
按照下表描述使用 table 选项关键字。除非指定了两种方式其中一种,否则只要计划 load 或 unload 数据,就可以使用每个关键字。
CREATE EXTERNAL TABLE ext_date (dob date) USING ( DATAFILES ("DISK:/tmp/datedisk"), REJECTFILE "/tmp/datereject", DBDATE "DMY2-", FORMAT "delimited"); INSERT INTO ext_date SELECT * FROM basetab;DBDATE 子句还在从外部表表插入数据到数据库表时使用。在以下示例中,外部表中的数据被转换为基于由 CREATE EXTERNAL TABLE 语句设置的 DBDATE 值的内部二进制格式。
INSERT INTO basetab SELECT * FROM ext_date;如果在 CREATE EXTERNAL TABLE 的 USING 子句中未指定 DBDATE 关键字,则日期格式由 DBDATE 环境变量的设置决定。如果未指定 DBDATE 环境变量,则日期格式由 GL_DATE 环境变量的设置决定。DBDATE 子句指定的值优先于 DBDATE 环境变量指定的值。DBDATE 变量设置的值优先于 GL_DATE 环境变量。有关 DBDATE 和 GL_DATE 值的信息,请参阅 GBase 8s SQL 参考指南。
CREATE EXTERNAL TABLE ext_money (sales money) USING ( DATAFILES ( "DISK:/tmp/moneydisk" ), REJECTFILE "/tmp/moneyreject", DBMONEY "DM,", FORMAT "delimited"); INSERT INTO ext_money SELECT * FROM basetab;
当将外部表中的数据读到数据库表中时,外部表不需要货币符号。例如,如果外部表包含值 1000,78且 DBMONEY 设置为 DM, ,则该数据不会被拒绝且该行会正确存储。
如果十进制符号在外部表中且设置的 DBMONEY 值不符合,那么该行被拒绝。例如:如果外部表包含值 1000,78 (使用逗号代替小数点)且将 DBMONEY 子句设置为 DM.,则该行被拒绝。如果数据文件包含一个货币符号并且该货币符号不符合 DBMONEY 货币符号,则该行被拒绝。
当从数据库表写入数据到外部表时,货币符号不会写入到外部表中。
如果没有指定 DBMONEY 子句,则通过设置 DBMONEY 环境变量决定数据格式。DBMONEY 子句指定的值优先于 DBMONEY 环境变量指定的值。如果没有指定 DBMONEY 子句且也没有设置 DBMONEY 环境变量,则使用数据库语言环境指定的十进制分隔符。有关 DBMONEY 值的信息,请参阅 GBase 8s SQL 参考指南。
缺省情况下,在 field_delimiter 字符之前 ESCAPE 关键字插入的转义字符是反斜杠(\)。但是如果 DEFAULTESCCHAR 配置参数设置为单符号值,则当指定了 ESCAPE 或 ESCAPE ON 后,用此符号代理反斜杠(\)作为定界符。
EXPRESS 方式加载(使用轻量级追加)比 DELUXE 方式加载明显快很多,但是不太灵活。在 EXPRESS 方式,直到加载完毕,您才能更新该表或读取新数据项。
如果指定 EXPRESS 方式,而表 BLOB 、BYTE 、CLOB 或 TEXT 类型的对象,则加载停止,产生错误消息。
当使用 EXPRESS 方式加载数据时,目标表不能位于 Enterprise Replication (ER) 复制中。此外,目标数据库服务器必须没有启用高可用数据复制(HDR)。
MAXERRORS 的最小值为 1 。将 MAXERRORS 值设置为小于 1 的值会产生错误。MAXERRORS 的最大值为 2,147,483,647 。
在连接查询中使用外部表时,指定 NUMROWS(或者它的同义词 SIZE)可以提高性能。该值不能为 NULL 。