【发布时间】:2021-05-12 11:32:57
【问题描述】:
我需要在 PL/pgSQL 中运行以下语句。
if file_record.has_recieved_time_column then
EXECUTE FORMAT('COPY mytemp (columnA, columnB, columnC)
FROM %L
DELIMITER '',''
CSV HEADER;', file_record.file_path);
elseif file_record.has_header then
-- dont load columnC
EXECUTE FORMAT('COPY mytemp (columnA, columnB)
FROM %L
DELIMITER '',''
CSV HEADER;', file_record.file_path);
else
-- dont load columnC and the file has no header
EXECUTE FORMAT('COPY mytemp (columnA, columnB)
FROM %L
DELIMITER '',''
CSV;', file_record.file_path);
end if;
如何避免在这段代码中重复重复自己?
【问题讨论】:
-
您有三个不同的
COPY语句。重复是什么意思?该功能是否与多个 IF / ELSE 一起使用? -
理想情况下,我想通过以某种方式定义
cols = (colA, colB)然后执行if file_record.has_recieved_time_column: cols += colC然后将cols作为参数传递给COPY语句并为@ 执行类似的操作来构建查询987654327@
标签: sql postgresql plpgsql