Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 雪花-复制空行的列标题_Amazon S3_Snowflake Cloud Data Platform_Snowflake Task - Fatal编程技术网

Amazon s3 雪花-复制空行的列标题

Amazon s3 雪花-复制空行的列标题,amazon-s3,snowflake-cloud-data-platform,snowflake-task,Amazon S3,Snowflake Cloud Data Platform,Snowflake Task,我使用copyto命令将来自snowflake的查询结果存储到s3 bucket中的一个文件中。它按预期工作,但是当查询没有返回任何数据时,我仍然希望将列名保存在同一个文件中,以便在UI中显示带有列名的空行。我在命令中指定了header=true,但当查询没有返回结果时,它不起作用 谢谢根据: 如果源表包含0行,则不会执行复制操作 卸载一个空的数据文件;甚至没有包含表列的文件 标题 而且似乎没有办法改变这种行为 但是,在将表写入S3之前,可以通过查询来将头作为数据写入。然后像往常一样使用OVER

我使用copyto命令将来自snowflake的查询结果存储到s3 bucket中的一个文件中。它按预期工作,但是当查询没有返回任何数据时,我仍然希望将列名保存在同一个文件中,以便在UI中显示带有列名的空行。我在命令中指定了header=true,但当查询没有返回结果时,它不起作用

谢谢

根据:

如果源表包含0行,则不会执行复制操作 卸载一个空的数据文件;甚至没有包含表列的文件 标题

而且似乎没有办法改变这种行为

但是,在将表写入S3之前,可以通过查询来将头作为数据写入。然后像往常一样使用OVERWRITE=TRUE写入表-如果没有写入任何行,则头文件将保留

更新

下面是如何生成标题的示例:

select listagg(column_name,',') within group (order by ordinal_position)
from MY_DB.information_schema.columns 
where table_schema='MY_SCHEMA' and table_name='MY_TABLE';
然后,您可以将其作为数据写入CSV文件,如下所示:

copy into @my_stage/my_table  (
    select listagg(column_name,',') 
        within group (order by ordinal_position)
    from MY_DB.information_schema.columns 
    where table_schema='MY_SCHEMA' and table_name='MY_TABLE';
)
file_format = (type=csv compression=none field_delimiter=none)
header=false;

要在信息架构dbname.information_schema.columns中获取标题的表名是什么?您可以这样构造标题:从MY_DB.information_schema.columns中选择listaggcolumn_name,,“按顺序在组内排列”标题,其中table_schema='MY_schema'和table_name='MY_table';