копия postgres с разделителем строк - PullRequest
2 голосов
/ 21 марта 2012

У меня есть таблица foo с баром столбцов

foo
---
bar

Я использую команду копирования COPY (выбрать * из foo) Postgres ДО 'complete_file_path' WITH Delimiter ',' CSV HEADER

сейчасКак передать пользовательский разделитель строк?Пример

row delimiter = _a_\n

Мне требуется следующий вывод в моем файле

bar_a_
somevalue_a_
somevalue_a_
somevalue_a_

Я не уверен, как это сделать с помощью команды копирования.

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Postgres COPY TO не имеет возможности указать альтернативный разделитель строк. Вы всегда можете выполнить некоторую постобработку с помощью sed или языка по вашему выбору, чтобы превратить переводы строк в "_a_\n". или вы можете сделать некоторую конкатенацию строк в вашем select:

COPY (select bar || '_a_' as bar from foo)
  TO 'complete_file_path'
  WITH Delimiter ',' FORMAT CSV HEADER;
1 голос
/ 14 апреля 2017

Я не могу не задаться вопросом, почему?Если вы беспокоитесь о внедренных новых строках в то, что извлекается, то я бы порекомендовал переключиться на формат TEXT, который пропустит любые встроенные новые строки, когда два символа "\ n" оставят любые фактические символы новой строки как однозначные разделители записей.

Один недостаток TEXT в том, что вы не получаете заголовки: - (

Обход , что - для извлечения CSV с HEADERS и LIMIT 0 (для просто получение заголовков), а затем для извлечения TEXT. Неуклюжий, но вариант.

Подробнее о формате TEXT см. https://www.postgresql.org/docs/9.4/static/sql-copy.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...