Copy

為什麼 CURRENT_LOAD_SOURCE() 返回“Batch No. 1”而不是實際的源文件名?

  • March 24, 2016

我正在將一些數據載入到這樣的表中:

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().

引用自:https://dba.stackexchange.com/questions/133189