gsqlparser

解析Oracle sql,生成字段关系:

package org.example;

import gudusoft.gsqlparser.EDbVendor;
import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer;
import gudusoft.gsqlparser.dlineage.util.XML2Model;

public class OracleTest {

public static void main(String[] args) throws Exception {

    String sqltext = "-- oracle\nINSERT INTO deptsal\n" +
            "            (dept_no,\n" +
            "             dept_name,\n" +
            "             salary)\n" +
            "SELECT d.deptno,\n" +
            "       d.dname,\n" +
            "       SUM(e.sal + Nvl(e.comm, 0)) AS sal\n" +
            "FROM   dept d\n" +
            "       left join (SELECT *\n" +
            "                  FROM   emp\n" +
            "                  WHERE  hiredate > DATE '1980-01-01') e\n" +
            "              ON e.deptno = d.deptno\n" +
            "GROUP  BY d.deptno,\n" +
            "          d.dname; ";

    System.out.println(sqltext);
    System.out.println();
    System.out.println();
    System.out.println("-------------------------gen lineage--------------------------------------");

    DataFlowAnalyzer dlineage = new DataFlowAnalyzer(sqltext, EDbVendor.dbvoracle, false);
    dlineage.generateDataFlow();
    String result = XML2Model.saveXML(dlineage.getDataFlow());
    System.out.println(result);

 }
}

执行结果:

-- oracle
INSERT INTO deptsal
            (dept_no,
             dept_name,
             salary)
SELECT d.deptno,
       d.dname,
       SUM(e.sal + Nvl(e.comm, 0)) AS sal
FROM   dept d
       left join (SELECT *
                  FROM   emp
                  WHERE  hiredate > DATE '1980-01-01') e
              ON e.deptno = d.deptno
GROUP  BY d.deptno,
          d.dname; 


-------------------------gen lineage--------------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dlineage>
    <process id="8" name="Query Insert-1" procedureName="batchQueries" queryHashId="418d20458fa9befd48800a0662605e43" type="sstinsert" coordinate="[2,1,0],[15,19,0]"/>
    <table id="4" name="deptsal" type="table" processIds="8" coordinate="[2,13,0],[2,20,0]">
        <column id="5" name="dept_no" coordinate="[3,14,0],[3,21,0]"/>
        <column id="6" name="dept_name" coordinate="[4,14,0],[4,23,0]"/>
        <column id="7" name="salary" coordinate="[5,14,0],[5,20,0]"/>
        <column id="3" name="RelationRows" coordinate="[2,13,0],[2,20,0]" source="system"/>
    </table>
    <table id="12" name="dept" alias="d" type="table" coordinate="[9,8,0],[9,14,0]">
        <column id="13" name="deptno" coordinate="[13,29,0],[13,37,0]"/>
        <column id="14" name="dname" coordinate="[7,8,0],[7,15,0]"/>
    </table>
    <table id="20" name="emp" type="table" coordinate="[11,26,0],[11,29,0]">
        <column id="21" name="hiredate" coordinate="[12,26,0],[12,34,0]"/>
        <column id="22" name="deptno" coordinate="[13,18,0],[13,26,0]"/>
        <column id="23" name="sal" coordinate="[8,12,0],[8,17,0]"/>
        <column id="24" name="comm" coordinate="[8,24,0],[8,30,0]"/>
        <column id="26" name="*" coordinate="[10,26,0],[10,27,0]"/>
    </table>
    <resultset id="16" name="RESULT_OF_E-1" type="select_list" coordinate="[12,56,0],[12,57,0]">
        <column id="25" name="*" coordinate="[10,26,0],[10,27,0]"/>
        <column id="39" name="deptno" coordinate="[13,18,0],[13,26,0]"/>
        <column id="15" name="RelationRows" coordinate="[12,56,0],[12,57,0]" source="system"/>
        <column id="25_0" name="SAL" coordinate="[10,26,0],[10,27,0]"/>
        <column id="25_1" name="COMM" coordinate="[10,26,0],[10,27,0]"/>
        <column id="25_2" name="HIREDATE" coordinate="[10,26,0],[10,27,0]"/>
    </resultset>
    <resultset id="28" name="INSERT-SELECT-1" type="insert-select" coordinate="[6,8,0],[8,42,0]">
        <column id="29" name="deptno" coordinate="[6,8,0],[6,16,0]"/>
        <column id="30" name="dname" coordinate="[7,8,0],[7,15,0]"/>
        <column id="31" name="sal" coordinate="[8,8,0],[8,42,0]"/>
        <column id="27" name="RelationRows" coordinate="[6,8,0],[8,42,0]" source="system"/>
    </resultset>
    <resultset id="33" name="SUM" type="function" coordinate="[8,8,0],[8,35,0]">
        <column id="34" name="SUM" coordinate="[8,8,0],[8,11,0]"/>
        <column id="32" name="RelationRows" coordinate="[8,8,0],[8,35,0]" source="system"/>
    </resultset>
    <resultset id="36" name="Nvl" type="function" coordinate="[8,20,0],[8,34,0]">
        <column id="37" name="Nvl" coordinate="[8,20,0],[8,23,0]"/>
        <column id="35" name="RelationRows" coordinate="[8,20,0],[8,34,0]" source="system"/>
    </resultset>
    <relationship id="1_0" type="fdd" effectType="select">
        <target id="25_0" column="SAL" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[10,26,0],[10,27,0]"/>
        <source id="23" column="sal" parent_id="20" parent_name="emp" coordinate="[8,12,0],[8,17,0]"/>
    </relationship>
    <relationship id="1_1" type="fdd" effectType="select">
        <target id="25_1" column="COMM" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[10,26,0],[10,27,0]"/>
        <source id="24" column="comm" parent_id="20" parent_name="emp" coordinate="[8,24,0],[8,30,0]"/>
    </relationship>
    <relationship id="1_2" type="fdd" effectType="select">
        <target id="25_2" column="HIREDATE" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[10,26,0],[10,27,0]"/>
        <source id="21" column="hiredate" parent_id="20" parent_name="emp" coordinate="[12,26,0],[12,34,0]"/>
    </relationship>
    <relationship id="1_3" type="fdd" effectType="select">
        <target id="39" column="DEPTNO" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[13,18,0],[13,26,0]"/>
        <source id="22" column="deptno" parent_id="20" parent_name="emp" coordinate="[13,18,0],[13,26,0]"/>
    </relationship>
    <relationship id="1" type="fdd" effectType="select">
        <target id="25" column="*" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[10,26,0],[10,27,0]"/>
        <source id="21" column="hiredate" parent_id="20" parent_name="emp" coordinate="[12,26,0],[12,34,0]"/>
        <source id="22" column="deptno" parent_id="20" parent_name="emp" coordinate="[13,18,0],[13,26,0]"/>
        <source id="23" column="sal" parent_id="20" parent_name="emp" coordinate="[8,12,0],[8,17,0]"/>
        <source id="24" column="comm" parent_id="20" parent_name="emp" coordinate="[8,24,0],[8,30,0]"/>
        <source id="26" column="*" parent_id="20" parent_name="emp" coordinate="[10,26,0],[10,27,0]"/>
    </relationship>
    <relationship id="4" type="fdd" effectType="select">
        <target id="29" column="deptno" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[6,8,0],[6,16,0]"/>
        <source id="13" column="deptno" parent_id="12" parent_name="dept" parent_alias="d" coordinate="[13,29,0],[13,37,0]"/>
    </relationship>
    <relationship id="5" type="fdd" effectType="select">
        <target id="30" column="dname" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[7,8,0],[7,15,0]"/>
        <source id="14" column="dname" parent_id="12" parent_name="dept" parent_alias="d" coordinate="[7,8,0],[7,15,0]"/>
    </relationship>
    <relationship id="6" type="fdd" effectType="select">
        <target id="31" column="sal" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[8,8,0],[8,42,0]"/>
        <source id="34" column="SUM" parent_id="33" parent_name="SUM" coordinate="[8,8,0],[8,11,0]"/>
    </relationship>
    <relationship id="7" type="fdd" effectType="function">
        <target id="34" column="SUM" parent_id="33" parent_name="SUM" coordinate="[8,8,0],[8,11,0]"/>
        <source id="37" column="Nvl" parent_id="36" parent_name="Nvl" coordinate="[8,20,0],[8,23,0]"/>
    </relationship>
    <relationship id="8" type="fdd" effectType="function">
        <target id="37" column="Nvl" parent_id="36" parent_name="Nvl" coordinate="[8,20,0],[8,23,0]"/>
        <source id="25_1" column="COMM" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[10,26,0],[10,27,0]"/>
    </relationship>
    <relationship id="11" type="fdd" function="Nvl" effectType="function">
        <target id="34" column="SUM" parent_id="33" parent_name="SUM" coordinate="[8,8,0],[8,11,0]"/>
        <source id="25_0" column="SAL" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[10,26,0],[10,27,0]"/>
    </relationship>
    <relationship id="17" type="fdd" effectType="insert" processId="8" processType="sstinsert">
        <target id="5" column="dept_no" parent_id="4" parent_name="deptsal" coordinate="[3,14,0],[3,21,0]"/>
        <source id="29" column="deptno" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[6,8,0],[6,16,0]"/>
    </relationship>
    <relationship id="18" type="fdd" effectType="insert" processId="8" processType="sstinsert">
        <target id="6" column="dept_name" parent_id="4" parent_name="deptsal" coordinate="[4,14,0],[4,23,0]"/>
        <source id="30" column="dname" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[7,8,0],[7,15,0]"/>
    </relationship>
    <relationship id="19" type="fdd" effectType="insert" processId="8" processType="sstinsert">
        <target id="7" column="salary" parent_id="4" parent_name="deptsal" coordinate="[5,14,0],[5,20,0]"/>
        <source id="31" column="sal" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[8,8,0],[8,42,0]"/>
    </relationship>
    <relationship id="13" type="fdr" function="SUM" effectType="function">
        <target id="34" column="SUM" parent_id="33" parent_name="SUM" coordinate="[8,8,0],[8,11,0]"/>
        <source id="13" column="deptno" parent_id="12" parent_name="dept" parent_alias="d" coordinate="[13,29,0],[13,37,0]"/>
    </relationship>
    <relationship id="14" type="fdr" function="SUM" effectType="function">
        <target id="34" column="SUM" parent_id="33" parent_name="SUM" coordinate="[8,8,0],[8,11,0]"/>
        <source id="14" column="dname" parent_id="12" parent_name="dept" parent_alias="d" coordinate="[7,8,0],[7,15,0]"/>
    </relationship>
    <relationship id="2" type="fdr" effectType="select" clause="where">
        <target id="15" column="RelationRows" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[12,56,0],[12,57,0]" source="system"/>
        <source id="21" column="hiredate" parent_id="20" parent_name="emp" coordinate="[12,26,0],[12,34,0]" clauseType="where"/>
    </relationship>
    <relationship id="3" type="fdr" effectType="select">
        <target id="27" column="RelationRows" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[6,8,0],[8,42,0]" source="system"/>
        <source id="15" column="RelationRows" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[12,56,0],[12,57,0]" source="system"/>
    </relationship>
    <relationship id="9" type="fdr">
        <target id="35" column="RelationRows" parent_id="36" parent_name="Nvl" coordinate="[8,20,0],[8,34,0]" source="system"/>
        <source id="15" column="RelationRows" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[12,56,0],[12,57,0]" source="system"/>
    </relationship>
    <relationship id="12" type="fdr">
        <target id="32" column="RelationRows" parent_id="33" parent_name="SUM" coordinate="[8,8,0],[8,35,0]" source="system"/>
        <source id="15" column="RelationRows" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[12,56,0],[12,57,0]" source="system"/>
    </relationship>
    <relationship id="15" type="fdr" effectType="select" clause="on">
        <target id="27" column="RelationRows" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[6,8,0],[8,42,0]" source="system"/>
        <source id="39" column="deptno" parent_id="16" parent_name="RESULT_OF_E-1" coordinate="[13,18,0],[13,26,0]"/>
        <source id="13" column="deptno" parent_id="12" parent_name="dept" parent_alias="d" coordinate="[13,29,0],[13,37,0]" clauseType="joinCondition"/>
    </relationship>
    <relationship id="16" type="fdr" effectType="insert">
        <target id="3" column="RelationRows" parent_id="4" parent_name="deptsal" coordinate="[2,13,0],[2,20,0]" source="system"/>
        <source id="27" column="RelationRows" parent_id="28" parent_name="INSERT-SELECT-1" coordinate="[6,8,0],[8,42,0]" source="system"/>
    </relationship>
</dlineage>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gudusoft.gsqlparser-2.5.1.9.jar是一个用于解析SQL语句的Java库。它提供了一系列用于解析、分析和转换SQL语句的功能。用户可以通过下载并使用这个jar文件,轻松地对SQL语句进行解析和分析。 下载gudusoft.gsqlparser-2.5.1.9.jar非常简单。用户可以在官方网站或其他可信来源下载这个jar文件。通常,官方网站会提供最新版本的jar文件下载链接。用户只需点击下载链接,并选择合适的下载位置即可。 一旦下载完成,用户可以将gudusoft.gsqlparser-2.5.1.9.jar添加到他们的Java项目中。具体操作取决于所使用的集成开发环境(IDE)。通常,用户可以将这个jar文件添加到项目的依赖库中,然后在代码中引用它。 一旦添加到项目中,用户可以使用gudusoft.gsqlparser-2.5.1.9.jar中提供的类和方法来解析和分析SQL语句。这个jar文件提供了丰富的API,使用户能够获取SQL语句的各个部分,分析语句的结构,识别语句中的关键字和标识符等等。用户可以根据自己的需求,灵活地使用这些功能来完成各种操作。 总结而言,通过下载和使用gudusoft.gsqlparser-2.5.1.9.jar,用户可以方便地解析和分析SQL语句。这个jar文件提供了丰富的功能和API,使用户能够高效地处理SQL语句。无论是用于开发工具、数据迁移、数据交换还是其他SQL相关的操作,这个jar文件都是一个非常有用的工具。 ### 回答2: gudusoft.gsqlparser-2.5.1.9.jar是一个用于解析SQL语句的Java库。它提供了一系列的API和工具,可以帮助开发者进行SQL语句的语法解析、语义分析和查询优化等操作。 要下载gudusoft.gsqlparser-2.5.1.9.jar,可以通过以下步骤进行: 1. 打开一个支持Java开发的集成开发环境(IDE),例如Eclipse、IntelliJ IDEA等。 2. 在搜索引擎中搜索“gudusoft.gsqlparser-2.5.1.9.jar下载”。 3. 找到适用于您的操作系统和开发环境的下载链接,并点击下载。 4. 下载完成后,将.jar文件保存到您的项目文件夹中的合适位置。 5. 在IDE中打开您的Java项目,并导入gudusoft.gsqlparser-2.5.1.9.jar文件。 6. 确保在项目配置中正确设置了库的引用路径,以便在编译和运行时能够正确地访问该库。 7. 现在您可以在代码中使用gudusoft.gsqlparser-2.5.1.9.jar提供的API和工具来解析和处理SQL语句了。 请注意,确保下载的jar文件与您的操作系统和开发环境相匹配,并且与您的项目相兼容。此外,为了避免任何潜在的安全风险,请确保从官方网站或可信的软件下载渠道获取jar文件。 ### 回答3: gudusoft.gsqlparser-2.5.1.9.jar是一个Java库,用于解析SQL语句。如果您想要下载该库,您可以按照以下步骤进行: 1. 打开您的浏览器,进入gudusoft网站。 2. 寻找并进入gudusoft.gsqlparser-2.5.1.9.jar的下载页面。 3. 在下载页面上,您可以找到一个下载链接,点击该链接以开始下载。 4. 下载完成后,您将获得一个gudusoft.gsqlparser-2.5.1.9.jar文件。 5. 您可以将该文件保存到您的计算机中的任意位置。 请注意,根据gudusoft网站的相关规定,您可能需要购买许可证才能合法地使用该库。在下载和使用之前,请务必遵守相关的许可和使用条款。 希望这个回答能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值