powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / COPY. Обработка пустых строк.
4 сообщений из 4, страница 1 из 1
COPY. Обработка пустых строк.
    #39940321
Фотография Legi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, никак не могу побороть обработку пустых строк в CSV.

Есть хранимка, внутри генерю код на выпонление, по сути следующее получается:
Код: plsql
1.
2.
3.
COPY temp_load.tbl_1264_1111_2(load_unit_id, load_name, load_vendor, load_price, load_count) 
FROM '../../../../../../data/load_unit/1264_1111_2.csv' (DELIMITER ';', FORMAT CSV, HEADER,
FORCE_NOT_NULL (load_unit_id, load_name, load_vendor, load_price, load_count));



Когда в самом файле после данных есть множество пустых строк (теоретически их там не должно быть, но пользователи они такие и поэтому надо данный кейс обработать).

Получаю сейчас на выполнение вот такую ошибку:
Код: plsql
1.
2.
3.
ERROR:  missing data for column "load_name"
CONTEXT:  COPY tbl_1264_1111_2, line 6: ""
SQL state: 22P04



Сначала были ::int в нужных местах, но я и этим пожертвовал и перевел все поля в тип ::text

Код: plsql
1.
2.
3.
COPY temp_load.tbl_1264_1111_2(load_unit_id, load_name, load_vendor, load_price, load_count) 
FROM '../../../../../../data/load_unit/1264_1111_2.csv' DELIMITER ';' CSV HEADER
FORCE NOT NULL load_unit_id, load_name, load_vendor, load_price, load_count;



Т.е. в итоге мне нужно, чтобы пустые строчки просто проигнорировались... ну или записались с каким-либо 'NULL', а после загрузки я дропну такие записи.

Хелп плиз...
...
Рейтинг: 0 / 0
COPY. Обработка пустых строк.
    #39940434
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legi,
COPY ... FROM PROGRAM
...
Рейтинг: 0 / 0
COPY. Обработка пустых строк.
    #39940452
Фотография Legi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fte,

PROGRAM
документацияВыполняемая команда. COPY FROM читает стандартный вывод команды, а COPY TO записывает в её стандартный ввод.

Заметьте, что команда запускается через командную оболочку, так что если требуется передать этой команде какие-либо аргументы, поступающие из недоверенного источника, необходимо аккуратно избавиться от всех спецсимволов, имеющих особое значение в оболочке, либо экранировать их. По соображениям безопасности лучше ограничиться фиксированной строкой команды или как минимум не позволять пользователям вводить в неё произвольное содержимое.

https://postgrespro.ru/docs/postgresql/11/sql-copy


Не совсем понял как это может помочь? :(
...
Рейтинг: 0 / 0
COPY. Обработка пустых строк.
    #39940846
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legi
fte,

PROGRAM
документацияВыполняемая команда. COPY FROM читает стандартный вывод команды, а COPY TO записывает в её стандартный ввод.

Заметьте, что команда запускается через командную оболочку, так что если требуется передать этой команде какие-либо аргументы, поступающие из недоверенного источника, необходимо аккуратно избавиться от всех спецсимволов, имеющих особое значение в оболочке, либо экранировать их. По соображениям безопасности лучше ограничиться фиксированной строкой команды или как минимум не позволять пользователям вводить в неё произвольное содержимое.

https://postgrespro.ru/docs/postgresql/11/sql-copy


Не совсем понял как это может помочь? :(

Запускаете из команды COPY скрипт, предварительной обработки файла (удаляете пустые строки) , на стандартный вход copy подаётся файл без пустых строк, для юникса примерно так:
Код: sql
1.
2.
COPY temp_load.tbl_1264_1111_2(load_unit_id, load_name, load_vendor, load_price, load_count) 
FROM PROGRAM $$sed '/^$/d' ../../../../../../data/load_unit/1264_1111_2.csv$$
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / COPY. Обработка пустых строк.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]