Java编写Snowflake COPY INTO导出S3的SQL查询语法错误如何解决?
错误原因
你的代码存在三个语法问题直接导致SQL编译失败:
- 表名结束位置和
WHERE关键字之间没有空格,拼接后生成的非法片段为"TEST"."PUBLIC"."USER_TABLE"WHERE,SQL解析器无法识别 - 字段ID的双引号转义逻辑错误,多余的转义符导致生成的SQL中字段名引号不闭合
- Snowflake的COPY INTO语法不支持直接在源表名后追加WHERE过滤条件,需要将带过滤的源数据包裹为子查询
修复后的代码
String q = "COPY INTO s3://snowflake171\n" + " FROM (SELECT * FROM \"TEST\".\"PUBLIC\".\"USER_TABLE\" WHERE \"ID\" = ?)\n" + " STORAGE_INTEGRATION = s3_int\n" + " FILE_FORMAT = CSV_TEST";
补充说明
使用PreparedStatement绑定参数时,直接调用对应类型的set方法赋值即可,不需要额外给参数值加引号,JDBC会自动完成类型适配。
内容的提问来源于stack exchange,提问作者user9347049
相关产品推荐
相关产品推荐

