Copy
為什麼 CURRENT_LOAD_SOURCE() 返回“Batch No. 1”而不是實際的源文件名?
我正在將一些數據載入到這樣的表中:
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()
將按預期返回正在載入的文件的文件名。COPY table1 ( col1, col2, file_name AS CURRENT_LOAD_SOURCE() ) FROM :src_file -- no LOCAL! REJECTED DATA :rejected_file EXCEPTIONS :exceptions_file SKIP 1;
如果您
LOCAL
對:file_name
. 您只需要確保提供文件的基本名稱(而不是完整路徑),以匹配CURRENT_LOAD_SOURCE()
.