装入期间具有转换错误的行将写入执行转换的服务器上的拒绝文件中。
CREATE EXTERNAL TABLE 语句中的 REJECTFILE 关键字用于确定指定给拒绝文件的名称。
可不使用拒绝文件,而是使用 CREATE EXTERNAL TABLE 语句中的 MAXERRORS 关键字来指定数据库服务器停止装入数据之前允许的错误数。(如果不设置 MAXERRORS 关键字,数据库将无视错误数,处理所有数据。)
数据库服务器将在开始执行装入时除去拒绝文件(如果有)。仅当装入期间发生错误时,才会重新创建和写入拒绝文件。
拒绝文件条目是包含以逗号分隔的以下字段的单行:
file name, record, reason-code, field-name: bad-line
- file name
- 输入文件的名称
- record
- 输入文件中的记录号,在该文件中检测到错误
- reason-code
- 错误的描述
- field-name
- 外部字段名称(行中的第一个错误即在此处出现)或 <none>(如果拒绝不特别针对特定列)
- bad-line
- 坏行本身(仅对于定界或固定 ASCII 文件)
装入操作以 ASCII 格式写入 file name、record、field-name 和 reason-code。
bad-line 信息由输入文件的类型决定:
- 对于定界文件或固定文本文件,整个坏行将直接复制到拒绝文件中。但是如果定界格式表具有 TEXT 或 BYTE 列,那么拒绝文件中将不包含任何坏数据。装入操作将仅为每个拒绝的行生成一个标题。
- 对于 GBase 8s 内部数据文件,坏行不会放入拒绝文件中,因为您无法编辑文件中的二进制表示。但是,拒绝文件中仍然会报告 file name、record、reason-code 和 field-name,这样您可以隔离该问题。
以下类型的错误可能导致行被拒绝。
- CONSTRAINT constraint name
- 违反了该约束。
- CONVERT_ERR
- 有字段遇到转换错误。
- MISSING_DELIMITER
- 找不到定界符。
- MISSING_RECORDEND
- 找不到记录结尾。
- NOT NULL
- field-name 中找到了空值。
- ROW_TOO_LONG
- 输入记录长度超过了 64 KB。
- 输入记录长度超过了 2 GB。