从 .csv 文件复制数据到 Vertica 表

3
我正在尝试将平面文件中的数据复制到Vertica表中。我的数据被“^”包括,并使用“|”分隔符。以下是用于创建表的“CREATE TABLE”语句,以及我正在使用的复制语句。但是,我得到了一个错误:“ERROR: COPY:输入记录5754已被拒绝(第4列(TEST2_DT_TM)的无效timestamptz格式''。timestamptz的无效输入语法:“”)。在原始格式中,记录5754看起来像这样...在从中提取该平面文件的数据库中,“TEST2_DT_TM”(写为“^^”)为空。但由于某种原因,Vertica不想接受我在上面的“create table”语句中为“TEST2_DT_TM”定义的“timestamptz”字段。您是否有任何关于此行为的解释?
1个回答

1
你正在陷入一个一再重复的讨论:一个空字符串(在你的例子中使用角标作为字符串定界符,表示为^^)不是NULL值。并且时间戳不是字符串,因此,空字符串确实是一个错误的时间戳z字面量。
尝试不用任何值来代替null,并通过在COPY命令中添加NULL选项来指定NULL字面量。
COPY命令:
COPY test_table (
  UNIQUE_ID
, TEST_DT_TM
, TEST2_DT_TM
)
FROM LOCAL 'copyemptytz.csv' 
ENCLOSED BY '^' 
DELIMITER '|' 
NULL '' 
SKIP 1 
ABORT ON ERROR 
TRAILING NULLCOLS;

测试数据:(最后一行是您的问题行)

unique_id|test_dt_tm|test2_dt_tm|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^|^04/09/17 12:23:33^|
123|^04/09/17 12:23:33^||

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接