你没有告诉任何关于正在使用的格式。
加载不同列的唯一方法是从文件加载为单个列,例如。使用FIELD_DELIMITER = NONE 并拆分并转换为OBJECT,每个文件列作为一个属性。
如果第一条记录包含字段名称 c1 ... cn,您可以加载:
WITH
file AS (SELECT * FROM VALUES ('c1,c2,c3'), ('1,2,3'), ('11,22,33') t(REC)),
split_file AS (SELECT * FROM file CROSS JOIN LATERAL SPLIT_TO_TABLE(REC, ','))
combined_table AS (
SELECT content.SEQ - 1 REC_NO, OBJECT_AGG(headers.VALUE, content.VALUE::VARIANT) OBJ
FROM split_file content
INNER JOIN split_file headers
ON content.INDEX = headers.INDEX AND content.SEQ > 1 AND headers.SEQ = 1
GROUP BY content.SEQ
)
SELECT OBJ:c1::NUMBER c1, OBJ:c2::NUMBER c2, OBJ:c3::NUMBER c3, OBJ:c4::NUMBER c4
FROM combined_table;
上面的示例将所有内容组合到一个查询中,但在您的情况下,您必须单独聚合每个文件并将INSERT(附加)到combined_table。
这样做的原因是您可以引用不存在的对象属性(列)(例如c4),它们将被NULL替换。