У меня есть таблица со следующими столбцами:
col1 text,
col2 text,
col3 double precision,
col4 double precision,
col5 numeric
Мне нужно хранить там такие данные:
text, "text2", "439, 86 [404]", "0,39", "0,11", "37,70%"
Я использую эту команду:
test=# COPY dataToImport2 FROM '/opt/DataToImport2.csv' WITH (FORMAT csv);
Я получаю сообщение об ошибке:
ERROR: invalid input syntax for type double precision: "0,39"
CONTEXT: COPY datatoimport2, line 1, column summaprodazhtyisrub: "0,39"
Я понимаю, что мои ошибки связаны с символами «,» и «%». Если их удалить или заменить, то все в порядке.
Могу я написать какой-нибудь запрос, чтобы это получилось автоматически?





COPY не может загрузить только некоторые столбцы вашего входного файла.
Есть несколько вариантов:
Предварительно обработайте файл вне PostgreSQL.
Загрузите файл во временную таблицу и обработайте его содержимое.
Используйте сторонний инструмент, например pgLoader.
Если я использую опцию постобработки, мне нужно написать какой-то запрос, который может преобразовать данные, или мне нужно написать эти действия на языке программирования (как в препроцессе)?
Обычно вы можете сделать это с помощью операторов SQL, если вам не нужна действительно сложная обработка.
Десятичный разделитель в SQL -
., а не,.