oracle 迁移 PG"/>
oracle 迁移 PG
1:
同步工具:
ora2pg ,开源的, 需要安装各种包, 我就没用这个。
我用的 springboot + liquibase +navicat + UltraEdit
springboot + liquibase: 脚本执行, 可以做初始化脚本,管理项目sql版本管理
navicat : 数据 从 oracle迁移到 pg
UltraEdit: 大文件编辑超快
方式二:
如果不用做初始化脚本的, 直接用 navicat的数据传输, 结构和数据都可以同步,一次搞定
2: 步骤: 结构和数据分开
1: navicat 将oracle 数据库用户下的所有表导出结构
3: springboot + liquibase
项目结构:
pom.xml
,以下部分手敲,单次错误了的就需要修改;
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3.RELEASE</version></parent><!-- liquibase管理升级脚本(org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration 自动装配)--><dependencies><dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.2</version></dependency><dependency><groupId>com.oracle</groupId><artifactId>oracle6</artifactId><version>11.2.0.4</version></dependency></dependencies><build><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!--mvn liquibase:generateChangeLog (从数据库生成sql table或者data)--><plugin><groupId>org.liquibase</groupId><artifactId>liquibase-maven-plugin</artifactId><version>4.3.5</version><configuration><propertyFileWillOverride>true</propertyFileWillOverride><!--生成文件的路径--><outputChangeLogFile>src/main/resources/db/changelogs/table_init.oracle.sql</outputChangeLogFile><!--要连接库配置信息 --><driver>oracle.jdbc.OracleDriver</driver><url>jdbc:oracle:thin"xxx:1521/xxx</url><username>xxx</username><password>xxx</password><!--只生成数据--><!-- <diffTypes> data </diffTypes> --></configuration></plugin>
</build>
说明:
maven插件配置:liquibase-maven-plugin
:从已有项目数据库表生成,通过liquibase的maven插件
mvn命令: mvn liquibase:generateChangeLog
或者:
4:新建目录:
resource新建: db > changelogs
目录层级和名称自定义,无强制要求
changeLog-master.xml 内容:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns=""
xmlns:xsi=""
xsi:schemaLocation="
.8.xsd">
<!--<include file="classpath:db/changelogs/changelog_init.xml"/> --><!-- *.sql 导入所有 -->
<include file="db/changelogs/*.sql" relativeToChangeLogFile=false"/>
<!-- xxx.sql 导入某个指定的sql -->
<include file="db/changelogs/xxx.sql" relativeToChangeLogFile=false"/>
</databaseChangeLog>
table_init.sql 内容:
就是表结构的sql,
文件最上面加上:
-- liquibase formatted sql
-- changeset 姓名: 序列号惟一
init.text 内容;
appcalition.yml 文件内容:
配置数据库连接及 文件路径
pg 需要先创建好数据库和用户名:
最好是一个数据库一个用户名
运行:
执行完成就可以看到表及对象这些都创建好了
5: 数据迁移:
小数据量可以直接用 liquibase 做成sql脚本执行或者 datax 同步
1: navicat 先建好 oracle 和 pg 的数据连接测试连接成功。
2: 数据传输
2.1:
2.2: 选择哪些表同步 , 然后点击开始就ok了,
执行结果出现 successful 就代表成功, unsuccessful 就需要查看原因, 信息日志中会显示成功还是失败。
更多推荐
oracle 迁移 PG
发布评论