如何从snowflake的数据库表中下载超过100MB的数据到csv中

npo*_*ool 4 snowflake-cloud-data-platform

有没有办法将 Snowflake 中超过 100MB 的数据下载到 Excel 或 csv 中?

单击“下载或查看结果按钮”,我可以通过 UI 下载最多 100MB 的内容

Ric*_*ane 9

您需要考虑使用我们所说的“卸载”,又名“复制到位置”,记录如下: https: //docs.snowflake.net/manuals/sql-reference/sql/copy-into-location.html

其他选项可能是使用不同类型的客户端(python 脚本或类似脚本)。

我希望这有帮助...丰富

......编辑如下......

使用卸载(复制到位置)并不像看起来那么势不可挡,如果您可以使用 SnowSQL 客户端(而不是 WebUI),您可以从我们所谓的“内部阶段”“抓取”文件" 相当容易,示例如下。

CREATE TEMPORARY STAGE my_temp_stage;

COPY INTO @my_temp_stage/output_filex
FROM (select * FROM databaseNameHere.SchemaNameHere.tableNameHere)
FILE_FORMAT = ( 
 TYPE='CSV' 
 COMPRESSION=GZIP 
 FIELD_DELIMITER=',' 
 ESCAPE=NONE 
 ESCAPE_UNENCLOSED_FIELD=NONE 
 date_format='AUTO' 
 time_format='AUTO' 
 timestamp_format='AUTO'
 binary_format='UTF-8' 
 field_optionally_enclosed_by='"' 
 null_if='' 
 EMPTY_FIELD_AS_NULL = FALSE 
)  
overwrite=TRUE 
single=FALSE 
max_file_size=5368709120 
header=TRUE;

ls @my_temp_stage;

GET @my_temp_stage file:///tmp/ ;
Run Code Online (Sandbox Code Playgroud)

这个例子:

  1. 在 Snowflake 中创建一个临时舞台对象,当您关闭会话时该对象将被丢弃。
  2. 获取查询结果并将其加载到该内部临时阶段的一个(或多个)csv 文件中,具体取决于输出的大小。请注意,我没有创建另一个名为“文件格式”的数据库对象,这样做被认为是最佳实践,但如果您不介意命令如此,则可以在不创建该单独对象的情况下执行这些一次性提取长的。
  3. 列出阶段中的文件,以便您可以查看创建的内容。
  4. 使用 GET 拉取文件,在本例中,这是在我的 mac 上运行的,文件放置在 /tmp 中,如果您使用的是 Windoz,则需要进行一些修改。