天天看点

2021-07-19

关于oralce数据库导入postgre数据库问题

​ 1.1、使用工具Navicat或者dbever导入时,有时会出现字段类型的导入错误。比如oracle的number类型直接导入时会变成numeric类型,需要自己更改。

https://blog.csdn.net/pg_hgdb/article/details/79211375关于oralce数据库与postgre数据库的数据类型对比

​ 1.2、若Oracle数据库中的列名是小写,如不是小写,则要更改。则迁移过后,原始sql语句不需要过多变更,只需查看以下问题:

​ ①是否存在sql语句中表名是否大写并带引号,若没有则加上。

​ ②查看sql语句中字段名是否带引号,若带引号则将引号去掉。

​ ③查看是否有自增序列,若有自增序列,将原始oralce语句中的自增去掉,并把相对的该表数据导出,把该表清空,然后把对应自增字段从postgre中删除,通过sql语句在postgre中进行主键的重新创建,然后创建一个关于该字段自增的序列。

​ 1.3、oralce和postgre均通过sql语句来实现主键自增,且sql语句不同。如下所示:

Oracle创建一个关于主键自增的序列
<selectKey resultType="Integer" order="BEFORE" keyProperty="列名">
			select patrol_sequence.NEXTVAL "列名" from dual
		</selectKey>
           
Postgre创建一个关于主键自增的序列
CREATE SEQUENCE 表名_列明_seq
INCREMENT 1 
start 90//自增值的起始值
NO MINVALUE //不设置最小值
NO MAXVALUE //不设置最大值
CACHE 2;
ALTER TABLE "表名" ALTER COLUMN 列名 SET DEFAULT nextval('表名_列名_seq');