配置文件格式

配置文件格式

gpfdist配置文件使用YAML 1.1文档格式并且实现了一种定义转换参数的方案。配置文件必须是一个合法的YAML文档。

gpfdist程序会按照顺序处理该文档并且使用缩进(空格)来判断文档的层次以及小节之间的关系。空白的使用很重要。不要使用空白来进行格式化也不要用制表符。

下面是一个配置文件的基本结构。

---
VERSION:   1.0.0.1
TRANSFORMATIONS: 
transformation_name1:
TYPE:      input | output
COMMAND:   command
CONTENT:   data | paths
SAFE:      posix-regex
STDERR:    server | console
transformation_name2:
TYPE:      input | output
COMMAND:   command 
...
VERSION
必需。gpfdist配置文件方案的版本。当前版本是1.0.0.1。
TRANSFORMATIONS
必需。开始转换说明小节。一个配置文件必须有至少一个转换。当gpfdist收到一个转换请求时,它会在这个小节查找具有匹配的转换名称的项。
TYPE
必须。指定转换的方向。值是input或者output
  • inputgpfdist把转换处理的标准输出当做是要载入到Greenplum数据库的一个记录流。
  • output gpfdist把转换处理的标准输入当作是来自于Greenplum数据库的一个记录流并且写出到适当的输出。
COMMAND

必须。指定将被gpfdist执行来做转换的命令。

对于输入转换,gpfdist调用CONTENT设置中指定的命令。该命令应该会以适当的方式打开底层文件并且为每一行产生一个TEXT行以载入到Greenplum数据库。输入转换决定整个内容是应该被转换为一个行还是多个行。

对于输出转换,gpfdist调用在CONTENT设置中指定的命令。输出命令应该会以适当的方式打开底层文件并且向其中写入。输出转换决定转换好的输出的最终安置。

CONTENT

可选。值是datapaths。默认值是data

  • CONTENT指定data时,COMMAND小节中的文本%filename%会被替换为要读写的文件路径。
  • CONTENT指定paths时,COMMAND小节中的文本%filename%会被替换为包含要读写的文件列表的临时文件路径。

下面是一个COMMAND小节的例子,它展示了被替换掉的文本%filename%

COMMAND: /bin/bash input_transform.sh %filename%
SAFE

可选。一个POSIX 正则表达式,路径必须匹配它才能被传递给转换。在担心传递给命令的路径被注入或者被不正确解读时指定SAFE。默认对路径没有限制。

STDERR

可选。值是serverconsole

这个设置指定如何处理来自于转换的标准错误输出。默认值server指定, specifies that gpfdist将捕捉来自于转换的标准错误输出放在一个临时文件中,并且把该文件的前8k字节发送到Greenplum数据库作为一个错误消息。该错误消息将作为一个SQL错误出现。Console指定gpfdist不会重定向或者转换来自于转换的标准错误输出。