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="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
            http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.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  就需要查看原因, 信息日志中会显示成功还是失败。

更多推荐