2017-02-16 19 views
1

Я пытаюсь запустить команду копирования, которая заполняет db на основе конкатенации csv, , но один столбец должен быть жестко закодирован.vertica выполнение команды копирования со значением по умолчанию

столбцов таблицы имена:

col1,col2,col3 

содержимое файла (только цифры, имена являются имена столбцов БД):

1234,5678,5436 

Что мне нужно, это способ, чтобы вставить данные говорят о том, как это: основано на моем примере:

Я хочу поставить в БД:

col1 col2 col3 
1234 5678 10 

Примечание: 10, как жёстко, не обращая внимания на реальную стоимость col3 в дб

Должен ли я использовать FILLER? если да, то какая команда?

моя отправная точка:

COPY SAMPLE.MYTABLE (col1,col2,col3) 
FROM LOCAL 'c:\\1\\test.CSV' 
UNCOMPRESSED DELIMITER ',' NULL AS 'NULL' ESCAPE AS '\' RECORD TERMINATOR ' ' ENCLOSED BY '"' DIRECT STREAM NAME 'Identifier_0' EXCEPTIONS 'c:\\1\\test.exceptions' 
REJECTED DATA 'c:\\1\\test.rejections' ABORT ON ERROR NO COMMIT; 

Можете ли вы помочь, как загрузить эти столбцы (в основном col3)?

Благодаря

ответ

2

Вам нужно просто использовать фиктивный наполнитель для анализа (но игнорировать) 3-е значение в вашем CSV. Затем вам нужно использовать AS, чтобы сделать выражение, чтобы назначить третий столбец таблицы литералу.

Я добавил его к вашей КОПИИ ниже. Тем не менее, я не уверен, что понимаю вашу настройку RECORD TERMINATOR. Я бы посмотрел на это немного ближе. Возможно, у вас была проблема с копией/вставкой или что-то в этом роде.

COPY SAMPLE.MYTABLE (col1, col2, dummy FILLER VARCHAR, col3 AS 10) 
FROM LOCAL 'c:\1\test.CSV' UNCOMPRESSED DELIMITER ',' 
NULL AS 'NULL' ESCAPE AS '\' RECORD TERMINATOR ' ' 
ENCLOSED BY '"' DIRECT STREAM NAME 'Identifier_0' 
EXCEPTIONS 'c:\1\test.exceptions' REJECTED DATA 'c:\1\test.rejections' 
ABORT ON ERROR NO COMMIT;