2.7. DBeaver集成统一SQL实现多发功能
统一SQL支持集成到DBeaver中,可实现执行一次SQL多发到不同类型的数据库,例如连接Oracle数据库,在其tab页执行一次一条Oracle SQL,源Oracle数据库执行成功, 同时通过配置可以在其他目标数据库上执行成功,集成方法在本节进行说明。
2.7.1. 下载DBeaver社区版
访问 DBeaver Community 下载最新版。
2.7.2. 配置多发目标数据库
在任意文件夹下新建一个properties的配置文件,例如:
D:\unisql\application.properties
,多个目标数据库信息严格按照配置序号递增,配置如下:
警告
所有配置文件路径禁止含中文,建议只含有英文,下同
unisql.datasource[0].url=jdbc:unisql:oceanbase://127.0.0.1:2881/SYS?sourceDialect=oracle&targetDialect=ocean_base_oracle
unisql.datasource[0].user=user
unisql.datasource[0].password=password
unisql.datasource[1].url=jdbc:unisql:mysql://127.0.0.1:15001/test?sourceDialect=oracle&targetDialect=tdsql_mysql
unisql.datasource[1].user=user
unisql.datasource[1].password=password
进入
DBeaver
安装目录,例如windows:D:\Program Files\DBeaver
,macOS 右键点击 dbeaver.app,选择 “显示包内容”。找到并修改
dbeaver.ini
文件,增加1行:
-Dunisql.multi.configuration.path=D:\unisql\application.properties
保存文件配置,重启DBeaver。
警告
如果仅使用 DBeaver集成统一SQL ,请删除上述 dbeaver.ini
文件配置,保存,重启DBeaver
2.7.3. 新增驱动管理器
点击DBeaver上方导航栏中的
数据库
->驱动管理器
->新建
。在
创建新驱动
的第一个tab页面设置
:
驱动名称:为便于区分可根据的操作源数据库来填写,例如
UNISQL-Oracle-MULTI
、UNISQL-MYSQL-MULTI
驱动类型:选择默认的
Generic
。类名:
com.hundsun.lightdb.unisql.proxy.Driver
。URL模板(目前仅支持源为Oracle的数据库):
UNISQL-MULTI-Oracle:
jdbc:unisql:oracle:thin:@{host}[:{port}][:{database}]
UNISQL-MULTI-MYSQL:
jdbc:unisql:mysql://{host}[:{port}]/[{database}]
在
创建新驱动
第二个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驱动(源和目标的数据库jdbc驱动都要添加):
Oracle:
<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.14.0.0</version> </dependency>
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.7.4. 使用统一SQL驱动连接目标数据库
创建新的连接到目标数据库,选择上一步新建的驱动后点击下一步,填入主机,端口,数据库/模式,用户名,密码。
以上步骤操作完成就可以在DBeaver的 SQL编辑器
中使用Oracle的语法来测试统一SQL的多发的功能了,如果执行报错的情况,可以点击DBeaver结果的详细信息,结果如果想要查看保存统一SQL的转换DEBUG日志,还需进一步配置。
小技巧
关于模式的设置,Oracle的数据库,默认情况下,用户名与模式名称相同。多发功能中多发到PostgreSQL系列相关数据库,需要在PostgreSQL系列相关数据库下创建相同名称的模式。因为Oracle的模式名称一般是大写,所以PostgreSQL系列相关数据库创建相同大写模式名称时,模式名称要用英文双引号包裹。多发到OceanBase-Oracle和MySQL相关数据库不用考虑。
2.7.5. (可选)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
文件中,如果是jdbc抛出的异常,如PARSER ERROR、RESTORE ERROR也会有相应的错误日志,windows版默认是在C:\Users\你的用户名\AppData\Roaming\DBeaverData\workspace6\.metadata\dbeaver-debug.log
,可以点击DBeaver上方导航栏中的窗口
->首选项
,在首选项
左侧找到用户界面
->错误日志
,启用调试日志,查看和设置日志文件位置,方便开发定位问题。