2017-02-16 34 views
1

我試圖運行復制命令,基於串聯的csv,填充數據庫,但一列需要硬編碼Vertica執行復制命令與默認值

表列的名稱是:

col1,col2,col3 

文件內容(只是數字,名稱是DB列名):

1234,5678,5436 

我需要的是插入數據說喜歡的方式這一點:根據我的例子:

我想提出的分貝:

col1 col2 col3 
1234 5678 10 

注意:10硬編碼,在DB

我應該使用FILLER忽略COL3的真正價值?如果是這樣的命令?

我的出發點是:

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

您需要在您的CSV只使用一個虛擬填充物來解析(但忽略)第3個值。然後,您需要使用AS來執行表達式以將第三個表格列分配給文字。

我已將它添加到下面的COPY中。不過,我不確定我瞭解您的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;