Избегайте нулевых столбцов при экспорте в csv

#postgresql

#postgresql

Вопрос:

У меня есть такая таблица;

  col_1|col_2|col_3|col_4|col_5
 A1   |B1   |C1   |D1   |E1
 A2   |B2   |NULL |NULL |NULL
  

Используя КОПИРОВАНИЕ В CSV, я получаю этот результат;

  A1|B1|C1|D1|
 A2|B2|||
  

Но что мне нужно, так это;

  A1|B1|C1|D1|
 A2|B2|
  

Есть ли способ достичь этого результата с помощью COPY в postgresql?

Комментарии:

1. Зачем вам нужен файл CSV с разным количеством столбцов в строке?

2. Мне нужен основной csv-файл. Итак, я использую временную таблицу для объединения главной и подробной таблицы, а позже я бы экспортировал в файл csv.

3. Данные вашего примера подтверждают вашу идею, но что происходит, когда B1 в вашем примере вместо NULL этого? При чтении C1 становится значением для col_2 столбца?

4. Да, но в данном конкретном случае этого не произойдет. Основная строка никогда не получит NULL значение.

Ответ №1:

Один из методов заключается в выполнении манипуляций со строкой перед копированием:

 select col_1,
       concat_ws('|', col_2, col_3, col_4, col_5)
from t;
  

concat_ws() игнорирует NULL значения, что, по-видимому, является вашим намерением.