GBase 8a支持文本文件宽松模式加载,用户可以通过在加载语句中指定参数format值为5来指定采用宽松加载模式解析数据文件并加载。
FORMAT 5宽松模式加载适用于以下几种情况:
- 包围符中有行分隔符的数据;
- 包围符中有包围符的数据(配对或不配对);
- 字符型数据超过表定义字段宽度;
- 对于数值型字段和日期型字段,实际数据类型与对应的字段类型不同;
- 数据源文件列数多于表的列数;
- 数据源文件列数少于表的列数。
FORMAT 5宽松模式加载与FORMAT 3普通文本加载的对比:
FORMAT 5 | FORMAT3 | |
不一致规则 | 数据中有空值时,入库数据为null,不是default值,设定default值对加载结果没有影响。 | 数据中有空值时,如果有default值,入库数据为default值,否则入库为null。 |
支持超宽列自动截断 | 超宽列会记为错误数据 | |
数据文件中实际的包围符、列分隔符与控制文件中设置的不一致时,如果第一列为字符型,数据截断入库,后面的字段都为空值;如果第一列为数值型或日期型,则都为错误数据 | 不会对数据进行截断处理,多列和少列都会作为错误数据。 | |
指定 auto_fill_column,在少列的时候自动补齐,无论列定义是否有 default值,都会用 null 值补齐缺失列,而不是 default 值。 | 少列时不会自动补齐都作为错误数据。 | |
一致规则 | 行分隔符、列分隔符、包围符均支持多字符(不超过15个字符) | |
包围符缺省为空 | ||
行分隔符、列分隔符、包围符不允许重复 | ||
不支持转义符 | ||
支持有包围符和无包围符数据混合的情况,数值型数据无论是否有包围符,入库的均为数据本身 | ||
数据中有空格时,缺省去掉前后的空格,包围符中的空格保留 | ||
数据中分隔符之间为空格、多个空格时,如果没有包围符,会被当做空值处理。 | ||
数据中有空值时,若此列为not null则生成错误数据 |