导入和导出固定宽度的数据
用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'
Parent topic: 使用一种自定义格式