我正在尝试在 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/