是否可以在csv中包含列名,并在Snowflake中使用copy into语句?

是否可以在csv中包含列名,并在Snowflake中使用copy into语句?,csv,export-to-csv,snowflake-cloud-data-platform,Csv,Export To Csv,Snowflake Cloud Data Platform,例如: COPY INTO @my_stage/my_test.csv FROM (select * from my_table) FILE_FORMAT = (TYPE = CSV) OVERWRITE=TRUE SINGLE=TRUE 将生成csv,但不包括列标题。如果复制到语句中是不可能的,那么是否有任何不明显的技术可以实现这一点 提前感谢。我们以前见过这个请求,它在我们的路线图上。如果这是您的优先事项,请联系雪花支持 如果你正在寻找一个解决方法,很难找到一个真正通用的方法 一

例如:

COPY INTO @my_stage/my_test.csv 
FROM (select * from my_table) 
FILE_FORMAT = (TYPE = CSV) 
OVERWRITE=TRUE SINGLE=TRUE 
将生成csv,但不包括列标题。如果复制到语句中是不可能的,那么是否有任何不明显的技术可以实现这一点


提前感谢。

我们以前见过这个请求,它在我们的路线图上。如果这是您的优先事项,请联系雪花支持

如果你正在寻找一个解决方法,很难找到一个真正通用的方法

  • 一个选项是添加具有显式列名的单行,但是 你需要提前了解他们,如果 并非所有字段都是字符串
  • 另一个是转换所有记录 使用OBJECT_CONSTRUCT(*)并导出为JSON,则 列名,但它当然只有在您可以接受 JSON

但我希望雪花在不久的将来会添加此功能。

雪花已经添加了此功能。您只需添加一个选项
HEADER=TRUE

COPY INTO @my_stage/my_test.csv 
FROM (select * from my_table) 
FILE_FORMAT = (TYPE = CSV) 
OVERWRITE=TRUE SINGLE=TRUE HEADER=TRUE

为了补充@Jiaxing的答案,雪花
标题
功能还允许您通过
将列命名为
,从而明确定义列名:

COPY INTO @my_stage/my_test.csv 
FROM (
  SELECT
    column1 AS "Column 1",
    column2 AS "Column 2"
  FROM my_table
) FILE_FORMAT = (TYPE = CSV)

马辛,谢谢你的回复。我在一个python应用程序上做这件事。我能够在查询中执行showcolumns,用列列表构建一个copy-into语句以进行正确排序,下载csv并在将csv加载到数据框中时设置列名。一个小小的篮球跳跃。我想问题现在已经解决了,但我可能会研究object_构造(我们的字段都不是字符串)。希望他们能把这个功能放进去。csv中没有标题实际上限制了什么类型的应用程序可以轻松处理数据。已验证。但是,如果SINGLE=FALSE,它将把头放在每个文件中。这是尝试将文件合并为一个文件时出现的问题:(是的。如果Snowflake为单个文件添加一个标题选项会更好。如果此选项对您来说是高优先级的,请联系Snowflake支持。