Мы экспортируем данные из Postgres 9.3 в текстовый файл для загрузки в Spark.
Мы хотели бы использовать символ разделителя полей ASCII 31 в качестве разделителя вместо \ t, чтобы нам не приходилось беспокоиться об устранении проблем.
Мы можем сделать это в таком сценарии оболочки:
#!/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