#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
значения, что, по-видимому, является вашим намерением.