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