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

时间:2016-03-09 19:17:41

标签: csv export-to-csv snowflake-datawarehouse

例如:

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

将导致csv,但不包括列标题。如果复制到语句中是不可能的,那么可能有任何非显而易见的技术可以实现这一点吗?

提前致谢。

3 个答案:

答案 0 :(得分:4)

Snowflake添加了此功能。您只需添加选项HEADER=TRUE

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

答案 1 :(得分:3)

我们之前已经看过这个请求了,它已经在我们的路线图上了。如果您高度重视,请联系Snowflake支持。

如果您正在寻找一种解决方法,很难想出一个真正的通用解决方案。

  • 一个选项是添加具有显式列名的单行,但是 你需要提前知道它们,如果它可能效率不高 并非所有字段都是字符串。
  • 另一种是转换所有记录 使用OBJECT_CONSTRUCT(*)并导出为JSON,那么你将拥有 列名,但它当然只有在您可以摄取时才有用 JSON。

但我希望Snowflake能够在不远的将来添加这项功能。

答案 2 :(得分:0)

要补充@Jiaxing的答案,雪花HEADER功能还允许您通过AS为列命名来显式定义列名称:

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