如何获取暂存文件雪花中的列数

时间:2020-10-01 19:10:02

标签: cloud snowflake-cloud-data-platform database-metadata snowflake-stream

我正在Snowflake中暂存一个文件,并使用Copy将其加载到表中。加载之前,我想检查文件中的列数以确保它与表匹配。

如何获取此暂存文件的列数?

3 个答案:

答案 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 |
+-----------+