Estou carregando alguns dados em uma tabela como esta:
COPY table1 (
col1,
col2,
file_name AS CURRENT_LOAD_SOURCE()
)
FROM LOCAL :src_file
REJECTED DATA :rejected_file
EXCEPTIONS :exceptions_file
SKIP 1;
Funciona, exceto file_name
que é preenchido com a string Batch No. 1
em vez do nome base real de :src_file
.
O documentoCURRENT_LOAD_SOURCE()
não explica por que isso está acontecendo.
Isso é um inseto? Como faço para obter o nome real do arquivo de origem?
Isso certamente parece um bug, quer você queira caracterizá-lo como um descuido, um recurso inacabado ou outra coisa.O suporte da Vertica me disse que esse é um problema conhecido e uma correção está sendo rastreada como parte do VER-36735. (Infelizmente, o rastreador de problemas não é visível ao público.)
O problema parece estar relacionado à
LOCAL
cláusula, que é usada para carregar arquivos que estão na máquina cliente e não no servidor.Se você remover a
LOCAL
cláusula (e colocar os arquivos que está carregando no servidor),CURRENT_LOAD_SOURCE()
retornará o nome do arquivo que está sendo carregado, conforme o esperado.Se você está preso com o
LOCAL
, sua melhor aposta é simplesmente passar uma nova variável (por exemplo:file_name
) que você definiu explicitamente com o nome do arquivo que está carregando. Você só precisa ter certeza de fornecer o nome base do arquivo (em oposição ao caminho completo), para corresponder ao comportamento pretendido deCURRENT_LOAD_SOURCE()
.