java从一个数据库查询数据保存到另一个数据库(MySql)

这个查询的是mysql的数据库。

目的是实现定时从某一个数据库里提取想要的数据。这个代码,是学习java的时候,比较基础的数据库连接问题了。简单做个笔记,巩固自己的基础,也希望有大神发现不妥之处,或者可优化的地方,能够提出来,谢谢!

连接源数据库:


    /**
     * 数据源
     */
    public void ImportDataByJdbc() {

        long startTime = System.currentTimeMillis();    //获取开始时间

        Connection con = null;// 创建一个数据库连接
        PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
        ResultSet result = null;// 创建一个结果集对象
        try {
            Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
            System.out.println("开始尝试连接cms数据库!");
            String url = "jdbc:mysql://13.11.71.43:3306/test?characterEncoding=utf-8&useSSL=false";//这是我测试用的源数据库连接
            String user = "root";// 用户名,系统默认的账户名
            String password = "123456";// 你安装时选设置的密码
            con = DriverManager.getConnection(url, user, password);// 获取连接
            System.out.println("cms连接成功!");

            String sql = "select id , name , password , age , sex , phone , remarks from sys_user";
            pre = con.prepareStatement(sql);// 实例化预编译语句
            result = pre.executeQuery();// 执行查询

            //数据存入目标库处理
            importData(result);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
                // 注意关闭的顺序,最后使用的最先关闭
                if (result != null)
                    result.close();
                if (pre != null)
                    pre.close();
                if (con != null)
                    con.close();
                System.out.println("cms数据库连接已关闭!\n");

                long endTime = System.currentTimeMillis();    //获取结束时间
                System.out.println("程序运行时间:" + (endTime - startTime) + "ms \n");    //输出程序运行时间

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

 连接目标数据库,进行数据分许、整理,入库。

 /**
     * 目标库
     *
     * @param
     * @return
     */
    public String importData(ResultSet result) {

        Connection con = null;// 创建一个数据库连接
        PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
        ResultSet result2 = null;// 创建一个结果集对象
        Timestamp currentTime = new Timestamp(System.currentTimeMillis());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        try {
            Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
            System.out.println("开始尝试连接omp数据库!");
            String url = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=false";
            String user = "root";// 用户名,系统默认的账户名
            String password = "123456";// 你安装时选设置的密码
            con = DriverManager.getConnection(url, user, password);// 获取连接
            System.out.println("omp连接成功!");

            int num = 0;
            while (result.next()) {

                //在此处 可做数据处理

                String sql = "insert into sys_user(id,name,password,age,sex,phone,remarks) " +
                        " values( " +
                        result.getString("id") + ",'" +
                        result.getString("name") + "','" +
                        result.getString("password") + "'," +
                        result.getString("age") + ",'" +
                        result.getString("sex") + "','" +
                        result.getString("phone") + "','" +
                        result.getString("remarks") + "' )";// 预编译语句
                pre = con.prepareStatement(sql);// 实例化预编译语句
                pre.execute();
                pre.close();
                num = num + 1;
            }
            System.out.println("成功插入(" + num + ")条数据");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
                // 注意关闭的顺序,最后使用的最先关闭
                if (result != null)
                    result.close();
                if (pre != null)
                    pre.close();
                if (con != null)
                    con.close();
                System.out.println("omp数据库连接已关闭!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }

最后,调取  ImportDataByJdbc() 就可以了。

其中有许多需要注意的事项,在进行数据处理时,要注意唯一字段在insert into 时会出现错误,要做过滤处理。

一切美好的遇见都是命中注定!!!

  • 18
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Java中将数据库数据复制到另一个表可以通过以下步骤实现: 1. 连接数据库:使用JDBC连接数据库,获取Connection对象。 2. 创建源表和目标表:使用CREATE TABLE语句,创建源表和目标表。 3. 复制数据:使用INSERT INTO SELECT语句,将源表中的数据复制到目标表中。 下面是一个示例代码: ```java import java.sql.*; public class CopyTableData { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 连接数据库 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 创建源表和目标表 stmt = conn.createStatement(); stmt.executeUpdate("CREATE TABLE source_table (id INT, name VARCHAR(20))"); stmt.executeUpdate("CREATE TABLE target_table (id INT, name VARCHAR(20))"); // 向源表中插入数据 stmt.executeUpdate("INSERT INTO source_table VALUES (1, 'John')"); stmt.executeUpdate("INSERT INTO source_table VALUES (2, 'Mary')"); // 复制数据 stmt.executeUpdate("INSERT INTO target_table SELECT * FROM source_table"); System.out.println("Table data copied successfully."); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭连接和语句对象 try { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 该示例代码使用JDBC连接MySQL数据库,创建了一个名为source_table的源表和一个名为target_table的目标表,向源表中插入了两条数据,然后使用INSERT INTO SELECT语句将源表中的数据复制到目标表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值