记录在复制时在HP Vertica中被拒绝

min*_*rma 3 vertica

我试图通过COPY DIRECT管道分隔的文本文件在HP Vertica中加载分段表.

COPY CSI.MKT_RSRCH_AGG_ALL FROM '/opt/vertica/CSI/MKT_RSRCH_AGG_ALL.txt' DELIMITER '|' NULL '' DIRECT;
Run Code Online (Sandbox Code Playgroud)

结果

 Rows Loaded 
-------------
      582006

dbadmin=> select get_num_rejected_rows();

 get_num_rejected_rows 
-----------------------
                  6046
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚导致数据被拒绝的原因.

我的所有维度都已定义NOT NULL.

我可以检查被拒绝记录的任何日志/信息.

Ker*_*mit 6

我首先要验证数据的完整性.然后,我会将任何被拒绝的行发送到文件.您可以在命令中指定COPY:

COPY CSI.MKT_RSRCH_AGG_ALL 
FROM '/opt/vertica/CSI/MKT_RSRCH_AGG_ALL.txt' 
DELIMITER '|' 
NULL ''
REJECTED DATA '/path/to/rejected/data'
DIRECT;
Run Code Online (Sandbox Code Playgroud)

如果您还没有,我建议您开始使用流名称来标识进程:

COPY ... DIRECT STREAM NAME 'My stream name';
Run Code Online (Sandbox Code Playgroud)

您可以轻松监控流:

SELECT * FROM v_monitor.load_streams WHERE stream_name = 'My stream name';
Run Code Online (Sandbox Code Playgroud)

文档