配置文件格式

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

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

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

  1. ---
  2. VERSION: 1.0.0.1
  3. TRANSFORMATIONS:
  4. transformation_name1:
  5. TYPE: input | output
  6. COMMAND: command
  7. CONTENT: data | paths
  8. SAFE: posix-regex
  9. STDERR: server | console
  10. transformation_name2:
  11. TYPE: input | output
  12. COMMAND: command
  13. ...

VERSION

必需。gpfdist配置文件方案的版本。当前版本是1.0.0.1。

TRANSFORMATIONS

必需。开始转换说明小节。一个配置文件必须有至少一个转换。当gpfdist收到一个转换请求时,它会在这个小节查找具有匹配的转换名称的项。

TYPE

必须。指定转换的方向。值是input或者output。

  • input:gpfdist把转换处理的标准输出当做是要载入到Greenplum数据库的一个记录流。
  • output : gpfdist把转换处理的标准输入当作是来自于Greenplum数据库的一个记录流并且写出到适当的输出。

COMMAND

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

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

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

CONTENT

可选。值是data和paths。默认值是data。

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

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

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

SAFE

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

STDERR

可选。值是server和console。

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

上级主题: 传输和存储数据