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

csv export-to-csv snowflake-datawarehouse

624 观看

3回复

40 作者的声誉

例如:

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

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

提前致谢。

作者: David Morgan 的来源 发布者: 2016 年 3 月 9 日

回应 (3)


3

2031 作者的声誉

决定

我们之前已经看过这个请求了,这是我们的路线图。如果您的首要任务,请联系Snowflake支持。

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

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

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

作者: Marcin Zukowski 发布者: 28.03.2016 05:13

4

80 作者的声誉

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
作者: Jiaxing Liang 发布者: 23.04.2016 12:37

0

860 作者的声誉

为了补充@ Jiaxing的答案,Snowflake 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)
作者: Marco Roy 发布者: 20.03.2019 06:58
32x32