我正在将一些数据加载到这样的表中:
COPY table1 (
col1,
col2,
file_name AS CURRENT_LOAD_SOURCE()
)
FROM LOCAL :src_file
REJECTED DATA :rejected_file
EXCEPTIONS :exceptions_file
SKIP 1;
它有效,除了用字符串而不是实际的基本名称file_name
填充。Batch No. 1
:src_file
的文档CURRENT_LOAD_SOURCE()
没有解释为什么会这样。
这是一个错误吗?如何获取源文件的实际名称?
这看起来确实像一个错误,无论您是想将其描述为疏忽、未完成的功能还是其他。Vertica 支持人员告诉我这是一个已知问题,并且作为 VER-36735 的一部分正在跟踪修复。(不幸的是,他们的问题跟踪器对公众不可见。)
该问题似乎与该
LOCAL
子句有关,该子句用于加载客户端计算机上的文件而不是服务器上的文件。如果删除该
LOCAL
子句(并将正在加载的文件放在服务器上),则将CURRENT_LOAD_SOURCE()
按预期返回正在加载的文件的文件名。如果您坚持使用
LOCAL
,那么最好的办法是简单地传入一个新变量(例如:file_name
),您使用您正在加载的文件的名称明确设置该变量。您只需要确保提供文件的基本名称(而不是完整路径),以匹配CURRENT_LOAD_SOURCE()
.