通过 JDBC 与 COPY_INTO + GET 批量卸载雪花数据

Posted

技术标签:

【中文标题】通过 JDBC 与 COPY_INTO + GET 批量卸载雪花数据【英文标题】:Bulk unloading Snowflake data through JDBC vs COPY_INTO + GET 【发布时间】:2021-08-25 22:13:55 【问题描述】:

我有兴趣从 Snowflake 连续批量卸载数据到本地存储。通过使用 JDBC 直接发出 SELECT 查询与使用 COPY_INTO 复制到 Snowflake 内部阶段然后使用 GET 命令从内部阶段 (Snowflake reference) 下载,从 Snowflake 批量卸载是否有任何缺点。

通过 JDBC 进行选择查询似乎更直接,无需使用中间内部阶段的雪花存储容量。

【问题讨论】:

嗨 - 在这种情况下,您所说的“持续”是什么意思?如果连续提取有意义,您的数据可能会不断输入到 Snowflake 中? 【参考方案1】:

COPY INTO 有一些直接 SELECT 没有的额外好处:

    格式选项,允许您生成除 CSV 之外的其他文件类型,例如 JSON、Parquet、AVRO、ORC 和 XML 您可以直接复制到外部位置,例如 S3 您可以控制是生成单个文件还是多个文件,并定义每个文件的最大文件大小 您可以控制分隔符、字段包围和转义字符等 您可以决定使用什么压缩方式,它支持 GZIP、BZ2 等

这不是一个详尽的列表,所以我认为 COPY INTO 可以让您更好地控制简单的直接 SELECT。

【讨论】:

以上是关于通过 JDBC 与 COPY_INTO + GET 批量卸载雪花数据的主要内容,如果未能解决你的问题,请参考以下文章

hibernate添加数据报错:Could not execute JDBC batch update

将 JOOQ 查询与 JDBC 事务混合

如何通过 JDBC 增量查询 SQL Server CDC

通过JDBC 与数据库建立连接

javaWeb_JDBC_BeanUtils基本应用

通过Clojure和JDBC将5,000,000行移动到另一个Postgresql DB