2017-02-16 67 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;