我正在Snowflake中暂存一个文件,并使用Copy将其加载到表中。加载之前,我想检查文件中的列数以确保它与表匹配。
如何获取此暂存文件的列数?
答案 0 :(得分:0)
我认为没有办法做到这一点。但是,如果它是您已暂存的CSV文件,并且希望在加载到表之前先查看数据,则可以使用以下SQL
SELECT $1,$2,$3, ...$n from @<your stage name> - n is the number of columns in the CSV file
答案 1 :(得分:0)
我认为没有办法对暂存文件中的列数进行计数,如果要在将输入文件加载到实际表中之前对其进行验证,则可以使用 复制命令中的“ VALIDATION_MODE”,它将验证并返回错误。
[VALIDATION_MODE = RETURN__ROWS | RETURN_ERRORS | RETURN_ALL_ERRORS]
答案 2 :(得分:0)
有一种解决方法,您可以首先以不同的文件格式加载标头,将其拆分以获取数组,最后找出数组大小以获取总大小。
cat test.csv
a|b|c
1|2|3
创建名称阶段,但不使用管道,而是将所有数据都放在同一列中。
create or replace stage stg_col_count file_format = ( type = 'csv');
select $1 Col from @stg_col_count;
+-------+
| COL |
|-------|
| a|b|c |
+-------+
将其拆分成数组然后取大小。你只能带标题
select array_size(split($1,'|')) no_of_col from @stg_col_count limit 1;
+-----------+
| NO_OF_COL |
|-----------|
| 3 |
+-----------+