vertica执行带有默认值的复制命令

时间:2017-02-16 14:34:44

标签: vertica

我尝试运行复制命令,根据csv的串联填充数据库,但需要对一列进行硬编码

表列名称为:

col1,col2,col3

文件内容是(只是数字,名称是db列名称):

1234,5678,5436

我需要的是一种插入数据的方式,如下所示:基于我的例子:

我想放入db:

col1  col2  col3
1234  5678  10

注意: 10为硬编码,忽略col3在db的实际值

我应该使用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)吗?

由于

1 个答案:

答案 0 :(得分: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;