无法通过 Java 执行 Snowflake PUT 命令

Posted

技术标签:

【中文标题】无法通过 Java 执行 Snowflake PUT 命令【英文标题】:Unable to execute Snowflake PUT Command through Java 【发布时间】:2020-05-31 14:32:13 【问题描述】:

我们正在尝试使用 Java 将 JSON 文件从文件位置加载到 Snowflake 命名阶段。目前,PUT 命令仅适用于 ODBC,不适用于 JDBC。那么有没有办法使用Java代码来执行PUT命令呢?

谢谢

【问题讨论】:

【参考方案1】:

Snowflake JDBC 驱动程序确实支持对local file uploads 使用 PUT 语句。以下 java 语句被视为有效查询并上传文件:

statement.executeQuery("PUT file:///tmp/foo.json @JSONSTAGE/ overwrite=true");

在记录器下运行它会产生如下日志(这里的日志来自 JDBC 驱动程序版本v3.12.2):

n.s.c.jdbc.SnowflakeFileTransferAgent$1 FINE call:778 - filePath: /tmp/foo.json
n.s.c.jdbc.SnowflakeFileTransferAgent FINE uploadFiles:1751 - Done with uploading

JDBC 驱动程序还支持更有效的直接上传流的方式documented here。

【讨论】:

以上是关于无法通过 Java 执行 Snowflake PUT 命令的主要内容,如果未能解决你的问题,请参考以下文章

在 NextJS 中使用 Snowflake 无法连接或执行 getStaticPaths/getStaticProps 中的查询

无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError

Snowflake DB UDF 可以执行 SQL 命令吗?

sqitch init snowflake 无法确定 Snowflake 账户名

无法使用 Sqitch 连接到 Snowflake

如何在安全集成上授予角色使用权 Snowflake