oracle jdbc配置:
jdbc.validationQuery=SELECT COUNT(*) FROM DUAL
jdbc.driverclass=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.2.25:1521:orcl
jdbc.username=keye00        
jdbc.password=keye00
mysql  jdbc配置:
jdbc.validationQuery=SELECT COUNT(*) FROM DUAL
jdbc.driverclass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/keye?useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT&zeroDateTimeBehavior=convertToNull&useSSL=false
jdbc.username=keye00
jdbc.password=keye00

kingbase jdbc配置:

jdbc.validationQuery=SELECT COUNT(*) FROM DUAL
jdbc.driverclass=com.kingbase8.Driver
jdbc.url=jdbc:kingbase8://127.0.0.1:54321/koye
jdbc.username=koye00
jdbc.password=KOYEkeye00

人大金仓jar包:

将jdbc驱动包下载来,不用什么积分下载,我已经分享到阿里云盘:
阿里云盘分享

pom.xml依赖  导入

<dependency>
   <groupId>com.kingbase8.jdbc</groupId>
   <artifactId>kingbase8</artifactId>
   <version>8.6.0</version>
   <scope>system</scope>
   <systemPath>${basedir}/src/main/resources/jar/kingbase8-8.6.0.jar</systemPath>
</dependency>
 

函数需要注意的点:

1:必须针对数据库名称,建立用户名,赋予权限。否则即使设置default_schema,hibernate在执行原生的sql时也会报错“com.kingbase8.util.KSQLException: 错误: 关系 "cms_base_content" 不存在”。例如项目数据库名project_oa,则必须使用用户名为project_oa连接。
 

2:V8默认oracle风格,主键生成策略默认序列SEQUENCE,转库后需要手动添加序列hibernate_sequence。目前不支持根据配置选择默认主键策略

3:字符串判空问题,我们使用的版本金仓直接把空字符串当成null,这样在sql里使用 a = ''判断空就会有问题。这个可以自己修改配置,来确定字符串的空值类型。需要改一下数据库data目录下的kingbase.conf文件;添加 参数ora_input_emptystr_isnull=off; 重启数据库 生效


4:字段必须出现在 GROUP BY 子句中或者在聚合函数中使用,才可以在结果里展示

函数适配(持续更新)


总体来说,数据库适配过程中,需要对代码改动的,主要是不同的数据库对函数的支持不同,同一个函数或同一个功能,MySQL和Oracle的都不一样。

date_format无法识别,但是to_date、to_char支持,需要使用oracle风格的写法
trunc处理日期函数,在金仓里不可以,需要使用date_trunc
SELECT date_trunc( 'day', TIMESTAMP '2020-7-13 11:30:35' ) -  date_trunc( 'day', TIMESTAMP '2020-7-03 11:30:35' );



trunc处理日期相减的值,不支持,可以使用 to_number
SELECT to_number(date_trunc( 'day', TIMESTAMP '2020-7-13 11:30:35' ) -  date_trunc( 'day', TIMESTAMP '2020-7-03 11:30:35' ));



datediff函数不支持,可以使用to_number和date_trunc结合使用
 select to_number(date_trunc('day', ISNULL(b.reply_date,now())) - date_trunc('day', a.ADD_DATE))



oracle 的ifnull需要使用 ISNULL
oracle 的 CONVERT函数,金仓不支持,可以使用trunc,但是这个需要给一个参数,表示小数位数
CONVERT (t.count / 5090 * 100,DECIMAL ( 15, 3 )) 改为 trunc(t.count / 5090 * 100, 3)

人大金仓迁移工具使用流程:

进入DtsTools下面找到dts.exe启动程序

创建数据连接

创建oracle的连接池

再创建人大金昌的连接池 选版本就选你安装的版本即可

 然后创建迁移的任务

 选择刚刚创建的连接

 点击要迁移的数据库的名字

 并发和默认调整一下  ,如果数据量大的情况你可以适当调大,如果适中就默认即可

点击完成即可

 到此迁移过程结束,如有报错:

1:看最大连接数或者是并发太大,出现的问题,那么你需要调整并发和最大连接的数据

2:查看报错日志

3:可以看到在上面ddl中报错的语句来对于修改

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐