我尝试运行复制命令,根据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)吗?
由于
答案 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;