10.3. 统一SQL Java 接口
10.3.1. 简介
统一SQL提供了 Java API,可供 JAVA 程序直接调用;用户只需要在Maven项目中引入sql-convert-runtime依赖即可使用 JAVA API,具体可参考 集成统一SQL代理 。
10.3.2. 接口说明
接口签名:
public static String parse(String sql, String sourceDialect, String targetDialect) {}
该接口方法位于sql-convert-runtime模块中的com.hundsun.lightdb.unisql.golang.Transformer类中。
10.3.3. 接口请求参数
JAVA 接口的每一项参数说明如下:
参数名 |
类型 |
是否必须 |
说明 |
示例 |
---|---|---|---|---|
sql |
string |
是 |
源SQL语句 |
“select name, avg(score) from student_score group by name” |
sourceDialect |
string |
是 |
源数据库方言名称,具体可查看 数据源支持范围 中的 |
ORACLE |
targetDialect |
string |
是 |
目标数据库方言名称,具体可查看 数据源支持范围 中的 |
LIGHTDB_ORACLE |
10.3.4. 接口返回参数
返回类型是一个 string,表示转换后的sql语句,返回值有2种情况:
返回 null 值:表示转换失败
返回非 null 值:表示转换后的sql语句
10.3.5. 调用示例
本例子使用标准的 JAVA 测试用例展示该接口的使用方式,示例代码如下:
@Test
public void parseTest() {
String parsedSql = Transformer.parse("SELECT MEDIAN(amount) AS median_amount FROM aggregate_sales " +
"WHERE product_id = 1 ORDER BY median_amount", DbType.ORACLE.name(), DbType.POSTGRESQL.name());
System.out.println("统一SQL转换后sql " + parsedSql);
}
示例执行结果,Oracle的median函数将被转换为PostgreSQL的percentile_cont分析函数。
统一SQL转换后sql SELECT percentile_cont(5e-01) WITHIN GROUP (ORDER BY amount) AS median_amount FROM aggregate_sales WHERE product_id=1 ORDER BY median_amount