2015-12-28 3 views
0

Возможно ли выполнить команду копирования для оценки выражений при вставке?Postgres копировать данные и оценивать выражение

Для примера рассмотрим следующую таблицу

create table test1 (a int, b int) 

и у нас есть файл для импорта

5 , case when b = 1 then 100 else 101 
25 , case when b = 1 then 100 else 101 
145, case when b = 1 then 100 else 101 

Следующая заливка команда не в состоянии

COPY test1 FROM 'file' USING DELIMITERS ','; 

со следующей ошибкой

ERROR: invalid input syntax for integer

Это означает, что он не может оценить выражение case. Есть ли обходной путь?

+0

ли вы построить этот файл самостоятельно? –

+0

Да, это результат сценария миграции – dimcookies

ответ

1

Команда COPY только копирует данные (очевидно) и не оценивает код SQL, как описано в документации: http://www.postgresql.org/docs/9.3/static/sql-copy.html

Насколько я знаю, нет обходных путей для создания копии оценки SQL кода.

Вы должны препроцессировать файл CSV и конвертировать его в стандартный SQL скрипт с INSERT заявления в такой форме:

INSERT INTO your_table VALUES(145, CASE WHEN 1 = 1 THEN 100 ELSE 101 END); 

Затем выполните скрипт SQL с клиентом, который вы используете. То есть с psql вы бы использовать -f вариант:

psql -d your_database -f your_sql_script 
+0

Да, я знаю, что он работает со вставками, я проверял команду копирования по соображениям производительности. – dimcookies

+0

Ну, короткий ответ: «Нет, нет обходного пути» (AFAIK) –

Смежные вопросы