利用JDBC进行mysql到opengauss的数据迁移

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 利用JDBC进行mysql到opengauss的数据迁移

记录一下数据库实验中比较难的一个,实在是比较费脑筋。


任务:将一种数据类型从mysql上迁移到opengauss上 我在这里以视图为例


既然用JDBC连接,那么要导入mysql和opengauss的驱动


如下图所示,去官网上下载就可以了


下面为opengauss的连接 需要改的就是下面的ip地址(可以在你的数据库上用ifconfig查看),还有连接的具体数据库,还有你用户的名字和密码都需要根据自己的来改

 //gauss connect
    static final String JDBC_DRIVER = "org.postgresql.Driver";
    static final String gauss_URL = "jdbc:postgresql://ip address/DB";
 static final String gauss_user = "name";
    static final String gauss_pass = "password";

下面为mysql的连接, 同样一些基本信息需要填你自己的,值得一提的是最后一个驱动如果你的mysql是8.0以上则要加中间那个cj


static final String databaseName = "lab4";//数据库名
    static final String mysql_user = "";//使用管理员账号启动
    static final String mysql_pwd = " ";//数据库密码
    static final String mysql_URL = "jdbc:mysql://localhost:3306/" + databaseName + "?useSSL=false&serverTimezone=UTC";
    static final String mysql_DRIVER = "com.mysql.cj.jdbc.Driver";

下面为代码的关键 包括sql语句的定义 sql语句的执行,尤其要注意 思想是先从opengauss里提取出来数据,然后作为mysql语句的执行内容,一般会有字符串和变量不匹配的问题,要进行一下转义


 String sql;//提取
                sql = "SELECT table_name,table_schema,view_definition,check_option,is_updatable FROM information_schema.views where table_schema=\'lab4\' ;";
                String g_sql;
                g_sql="select * from test";
                ResultSet rs=gauss_stmt.executeQuery(g_sql);
                ResultSet resultset = mysql_stmt.executeQuery(sql);
                while (resultset.next()) {
                    String view_def = resultset.getString("VIEW_DEFINITION");
  view_def=view_def.replace("`","");
String a=" create view vi as %s;";
     String b=String.format(a,view_def);
 System.out.println(b);
    gauss_stmt.execute(b);

下面为完整代码


import java.sql.*;
public class lab4 {
    //gauss connect
    static final String JDBC_DRIVER = "org.postgresql.Driver";
    static final String gauss_URL = "jdbc:postgresql://192.168.176.154:5432/demo";
    // 数据库的用户名与密码,需要根据自己的设置
    static final String gauss_user = "dbuser";
    static final String gauss_pass = "Gauss#3demo";
    //mysql connect
    static final String databaseName = "lab4";//数据库名
    static final String mysql_user = "root";//使用管理员账号启动
    static final String mysql_pwd = "ljl050505 ";//数据库密码
    static final String mysql_URL = "jdbc:mysql://localhost:3306/" + databaseName + "?useSSL=false&serverTimezone=UTC";
    static final String mysql_DRIVER = "com.mysql.cj.jdbc.Driver";
        public static void main(String[]args)throws Exception {
            Connection mysql_conn = null;
            Statement mysql_stmt = null;
            Connection gauss_conn = null;
            Statement gauss_stmt = null;
            try {
                Class.forName(mysql_DRIVER);
                System.out.println("connect mysql DB");
                mysql_conn = DriverManager.getConnection(mysql_URL, mysql_user, mysql_pwd);
                mysql_stmt = mysql_conn.createStatement();
                Class.forName(JDBC_DRIVER);
                System.out.println("connect opengauss");
                gauss_conn = DriverManager.getConnection(gauss_URL, gauss_user, gauss_pass);
                gauss_stmt=gauss_conn.createStatement();
                String sql;//提取
                sql = "SELECT table_name,table_schema,view_definition,check_option,is_updatable FROM information_schema.views where table_schema=\'lab4\' ;";
                String g_sql;
                g_sql="select * from test";
                ResultSet rs=gauss_stmt.executeQuery(g_sql);
                ResultSet resultset = mysql_stmt.executeQuery(sql);
                while (resultset.next()) {
                    String view_def = resultset.getString("VIEW_DEFINITION");
  view_def=view_def.replace("`","");
String a=" create view vi as %s;";
     String b=String.format(a,view_def);
 System.out.println(b);
    gauss_stmt.execute(b);
                }
while(rs.next()){
 String g_name=rs.getString("name");
                    String g_location=rs.getString("location");
                    System.out.println("name"+g_name);
                    System.out.println("location"+g_location);
}
                resultset.close();
                mysql_stmt.close();
                mysql_conn.close();
                gauss_stmt.close();
                gauss_conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e1) {
                e1.printStackTrace();
            } finally {
                try {
                    if (mysql_stmt != null) mysql_stmt.close();
                } catch (SQLException e2) {
                }
            }
            try {
                if (mysql_conn != null) mysql_conn.close();
            } catch (SQLException e3) {
                e3.printStackTrace();
            }
            System.out.println("goodbye");
        }
    }
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
505 18
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
2496 1
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
345 3
|
关系型数据库 MySQL API
MySQL 历史数据迁移到 Elasticsearch
MySQL 历史数据迁移到 Elasticsearch
493 4
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
322 0
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
192 0
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
237 0
|
前端开发 关系型数据库 MySQL
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
这篇文章讨论了`com.mysql.jdbc.Driver`和`com.mysql.cj.jdbc.Driver`两个MySQL驱动类的区别,指出`com.mysql.jdbc.Driver`适用于MySQL 5的`mysql-connector-java`版本,而`com.mysql.cj.jdbc.Driver`适用于MySQL 6及以上版本的`mysql-connector-java`。文章还提到了在实际使用中如何根据MySQL版本选择合适的驱动类。
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
|
关系型数据库 MySQL Java
【Azure 应用服务】App Service 无法连接到Azure MySQL服务,报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
【Azure 应用服务】App Service 无法连接到Azure MySQL服务,报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
447 0
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
186 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)

推荐镜像

更多
下一篇
oss云网关配置