导入和导出固定宽度的数据
导入和导出固定宽度的数据
用Greenplum数据库函数fixedwith_in和fixedwidth_out为固定宽度的数据指定自定义格式。这些函数已经存在于文件$GPHOME/share/postgresql/cdb_external_extensions.sql中。下面的例子声明一个自定格式,然后调用fixedwidth_in函数来格式化数据。
CREATE READABLE EXTERNAL TABLE students ( name varchar(20), address varchar(30), age int) LOCATION ('file://<host>/file/path/') FORMAT 'CUSTOM' (formatter=fixedwidth_in, name='20', address='30', age='4');
下列选项指定如何导入固定宽度的数据。
- 读取所有数据。
要装载一行固定宽度数据上的所有域,用户必须按照它们的物理顺序装载它们。用户必须指定域长度,但不能指定开始和结束位置。固定宽度参数中的域名称必须匹配CREATE TABLE命令开头的域列表中的顺序。
- 设置空白和空值字符的选项。
T拖尾的空白会被默认修剪掉。要保留拖尾的空白,使用preserve_blanks=on选项。用户可以用preserve_blanks=off选项重置拖尾空白选项为默认值。使用null='null_string_value'选项来为空值字符指定一个值。
- 如果用户指定preserve_blanks=on,用户还必须为空值字符定义一个值。
- 如果用户指定preserve_blanks=off、空值没有定义并且域只包含空白,Greenplum会写一个空值到表中。如果定义了空值,Greenplum会写一个空串到表中。使用line_delim='line_ending'参数来指定行结束字符。下面的例子覆盖了大部分情况。E指定了一个转义字符串常量。
line_delim=E'\n' line_delim=E'\r' line_delim=E'\r\n' line_delim='abc'