我们正在将Postgres 9.3中的数据导出为文本文件,以便Spark进行摄入。
我们希望使用ASCII 31字段分隔符作为分隔符,而不是\t,这样我们就不必担心转义问题。
我们可以在shell脚本中像这样做:
我们希望使用ASCII 31字段分隔符作为分隔符,而不是\t,这样我们就不必担心转义问题。
我们可以在shell脚本中像这样做:
#!/bin/bash
DELIMITER=$'\x1F'
echo "copy ( select * from table limit 1) to STDOUT WITH DELIMITER '${DELIMITER}'" | (psql ...) > /tmp/ascii31
我们在思考,是否可以在 "纯" postgres 中指定一个不可打印的图形符号作为分隔符?
编辑:我们尝试使用 postgres 转义约定,参见http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html
warehouse=> copy ( select * from table limit 1) to STDOUT WITH DELIMITER '\x1f';
并且接收到
ERROR: COPY delimiter must be a single one-byte character