java - 如何将Snowflake中的FILE_FORMAT写入Java代码?

标签 java sql spring-boot snowflake-cloud-data-platform file-format

我正在尝试在 Java 代码中执行 COPY INTO 语句,如下所示:

copy into s3://snowflake
  from "TEST"."PUBLIC"."USER_TABLE_TEMP"
  storage_integration = s3_int
  file_format = CSV_TEST;

而且效果很好。

有没有办法在Java代码中添加这个file_format,这样就不需要在Snowflake中进行设置了?

例如我在Snowflake中设置的file_format的SQL代码是

ALTER FILE FORMAT "TEST"."PUBLIC".CSV_TEST SET COMPRESSION = 'NONE' FIELD_DELIMITER =
     ',' RECORD_DELIMITER = '\n' SKIP_HEADER = 0 FIELD_OPTIONALLY_ENCLOSED_BY = 'NONE' 
    TRIM_SPACE = TRUE ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE ESCAPE = 'NONE' 
    ESCAPE_UNENCLOSED_FIELD = '\134' DATE_FORMAT = 'AUTO' TIMESTAMP_FORMAT = 'AUTO' NULL_IF = ('\\N');

有没有办法把它写成Java代码?

更新

这是我使用 copy into 语句的代码:

String q = "COPY INTO s3://snowflake/"+ userId +" from \"EPICEROS\".\"PUBLIC\".\"USER_TABLE_TEMP\" storage_integration = s3_int file_format = CSV_TEST OVERWRITE=TRUE;";

jdbcTemplatePerBrand.get(brand).query(q, s -> {});

那么我如何应用像执行查询时创建的 file_format 一样?

最佳答案

您想要一个 EXTERNAL STAGE

您将创建如下内容:

CREATE STAGE awesome_stange_name
    URL = 's3://snowflake'
    FILE_FORMAT = test.public.csv_test

然后您可以复制到其中:

COPY INTO @awesome_stange_name
  FROM test.public.user_table_temp;

这意味着,如果进行复制的用户有权使用该阶段,那么他们就可以无需访问使用该安全位置所需的安全 token 。

关于java - 如何将Snowflake中的FILE_FORMAT写入Java代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69874341/

相关文章:

Java REGEX XML 解析/缩减同时保持结构 HowTo

java - 从 actionlistener 访问在 main 中创建的 JFrame

java - 该子类中不能使用继承的方法execute query

java - 在 windows 7 中安装 spring boot CLI

java - jFLAC。分割 FLAC 文件

java - 如何使用ProcessBuilder将EAR文件部署到wildfly服务器?

javascript - 从 HTML 表到 mysql 数据库

mysql - 选择数据库

java - 如何解决 "Invalid character found in the HTTP protocol [HTTP/1.10x0aHost:]"?

java - 如何让 Controller 使用特定的 @ControllerAdvice 而不是另一个?