2.6. DBeaver集成统一SQL
统一SQL支持集成到DBeaver中,方便开发调试,集成方法在本节进行说明。
2.6.1. 下载DBeaver社区版
访问 DBeaver Community 下载最新版。
2.6.2. 新增驱动管理器
点击DBeaver上方导航栏中的
数据库
->驱动管理器
->新建
。在
创建新驱动
的第一个tab页面设置
:
驱动名称:为便于区分可根据适配的数据库来填写,例如
UNISQL-Oracle2PostgreSQL
、UNISQL-Oracle2LightDB
、UNISQL-Oracle2TDSQL-MySQL5.7
、UNISQL-Oracle2OceanBase-Oracle
、UNISQL-Oracle2OceanBase-MySQL
、UNISQL-Oracle2DM
。驱动类型:选择默认的
Generic
。类名:
com.hundsun.lightdb.unisql.proxy.Driver
。URL模板(根据实际数据库类型选择以下一种):
Oracle2PostgreSQL:
jdbc:unisql:postgresql://{host}[:{port}]/[{database}]?sourceDialect=oracle&targetDialect=postgresql
Oracle2LightDB:
jdbc:unisql:postgresql://{host}[:{port}]/[{database}]?sourceDialect=oracle&targetDialect=lightdb_oracle
Oracle2TDSQL-MySQL5.7:
jdbc:unisql:mysql://{host}[:{port}]/[{database}]?sourceDialect=oracle&targetDialect=tdsql_mysql
Oracle2OceanBase-Oracle:
jdbc:unisql:oceanbase://{host}[:{port}]/[{database}]?sourceDialect=oracle&targetDialect=ocean_base_oracle
Oracle2OceanBase-MySQL:
jdbc:unisql:mysql://{host}[:{port}]/[{database}]?sourceDialect=oracle&targetDialect=ocean_base_mysql
Oracle2DM:
jdbc:unisql:dm://{host}[:{port}]/[{database}]?sourceDialect=oracle&targetDialect=dm
在
创建新驱动
第二个tab页面库
:
点击
添加工件
,在依赖声明
中添加统一SQL的主依赖:<dependency> <groupId>io.github.hslightdb</groupId> <artifactId>sql-convert-runtime</artifactId> <version>23.4.0.0</version> </dependency>
继续点击
添加工件
,在依赖声明
中添加统一SQL的动态库依赖:<dependency> <groupId>io.github.hslightdb</groupId> <artifactId>sql-convert-runtime-native</artifactId> <version>23.4.0.0</version> <classifier>debug</classifier> </dependency>
继续点击
添加工件
,在依赖声明
中添加目标数据库的jdbc驱动(根据实际数据库类型选择以下一种):
PostgreSQL:
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> </dependency>
LightDB-Oracle:
<dependency> <groupId>io.github.hslightdb</groupId> <artifactId>ltjdbc</artifactId> <version>42.2.25-23.4.0.0</version> </dependency>
TDSQL-MySQL 5.7:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency>
OceanBase-Oracle 3.2+:
<dependency> <groupId>com.oceanbase</groupId> <artifactId>oceanbase-client</artifactId> <version>2.4.4</version> </dependency>
OceanBase-MySQL 3.2+:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency>
DM V8-20231011+:
<dependency> <groupId>com.dameng</groupId> <artifactId>Dm8JdbcDriver18</artifactId> <version>8.1.1.193</version> </dependency>
点击
下载/更新
下载驱动文件,下载完成后点击确定
,至此统一SQL的驱动就添加好了。
2.6.3. 使用统一SQL驱动连接目标数据库
创建新的连接到目标数据库,选择上一步新建的驱动后点击下一步,填入主机,端口,数据库/模式,用户名,密码。
以上步骤操作完成就可以在DBeaver的 SQL编辑器
中使用Oracle的语法来测试统一SQL的转换功能了,如果想要查看统一SQL的转换DEBUG日志,还需进一步配置。
2.6.4. (可选)DBeaver全局库添加日志库
在任意文件夹下新建一个logback的配置文件,例如:
D:\unisql\logback.xml
,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="UnisqlLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>D:/unisql/unisql.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>D:/unisql/unisql.%d{yyyy-MM}.%d{yyyy-MM-dd.HH}.%i.log.gz</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>15</MaxHistory>
<!-- 单个文件达到最大100MB时开始切分 -->
<maxFileSize>100MB</maxFileSize>
<!--日志容量超过5GB,即使没有到保存期限的15天也会开启日志清理 -->
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.hundsun.lightdb.unisql" level="DEBUG" additivity="false">
<appender-ref ref="UnisqlLog" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
进入
DBeaver
安装目录,例如windows:D:\Program Files\DBeaver
,macOS 右键点击 dbeaver.app,选择 “显示包内容”。找到并修改
dbeaver.ini
文件,增加2行:
-Dunisql.debug=true
-Dlogback.configurationFile=D:\unisql\logback.xml
为了便于查看和输出统一SQL的DEBUG调试日志,提前下载好这3个jar包放到任意文件夹下:
点击DBeaver上方导航栏中的
窗口
->首选项
,在首选项
左侧找到连接
->驱动
->类路径
,点击全局库
右侧加号,将上面提前下载好的3个jar包都添加进去,点击应用并关闭
后DBeaver会自动关闭并重新打开。
重新打开DBeaver后连接进入目标数据库,在SQL编辑器界面执行SQL操作的日志都会输出到
D:\unisql\unisql.log
文件中,日志内容示例如下:
[UNISQL][transformSql]cost:134900 ns. From: merge into bonuses b using ( select employee_id, salary, dept_no from employee where dept_no = 20 ) e on (b.employee_id = e.employee_id) when matched then update set b.bonus = e.salary * 0.1 To: WITH e AS (SELECT employee_id,salary,dept_no FROM employee WHERE dept_no=20) UPDATE bonuses AS b SET bonus=e.salary*0.1 FROM e WHERE b.employee_id=e.employee_id
From
后面是源语句,To
后面是转换后的语句,如果是jdbc抛出的异常,如PARSER ERROR、RESTORE ERROR也会有相应的错误日志,windows版默认是在C:\Users\你的用户名\AppData\Roaming\DBeaverData\workspace6\.metadata\dbeaver-debug.log
,可以点击DBeaver上方导航栏中的窗口
->首选项
,在首选项
左侧找到用户界面
->错误日志
,启用调试日志,查看和设置日志文件位置,方便开发定位问题。