我需要从雪花存储过程中提取SQL查询。我决定通过Snowflake-JDBC API提取SQL查询。
我已经分析了Snowflake-JDBC API的Java文档,但不幸的是找不到任何方法来从存储过程中提取SQL查询。我在Snowflake-JDBC API中发现了一个名为QueryExecDTO的类,它有getSqlText()方法,但在我关心的问题中没有用处(我必须从存储过程中提取SQL )。我也知道Snowflake-JavaScript API的Statement对象,它有getSqlText()方法来获取SQL查询的文本,但它只能在JavaScript中使用,因为它是JavaScript-API的一部分
有没有办法使用Snowflake-JDBC API从存储过程中提取SQL?
发布于 2021-05-14 00:25:44
您需要运行如下命令:
select get_ddl('procedure', '*proc_name*(*arg list*)');要获取SP的文本,然后需要解析该文本以提取SQL语句。
如果您只想提取应该相对简单的SQL语句;但是,如果您想要解析这些语句,例如,列出正在使用的表,那么您将遇到困难。
解析SQL是非常复杂的(考虑到语言的灵活性),这可以从以下事实来说明:通用的SQL解析器非常少-而且那些实际工作的解析器并不便宜。
https://stackoverflow.com/questions/67521886
复制相似问题