`

Java代码编程实现MySQL数据库的备份与导入

 
阅读更多

 

/**
 * @author Zengyoujie
 * @date 2011-10-23 下午09:50:02
 * Copyright 2011
 */
package com.fjsdfx.sqlBack;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class Beifen {
	/**
     * @param args
     */
    public static void main(String[] args) {
        /*
         * 备份和导入是一个互逆的过程。
         * 备份:程序调用mysql的备份命令,读出控制台输入流信息,写入.sql文件;
         * 导入:程序调用mysql的导入命令,把从.sql文件中读出的信息写入控制台的输出流
         * 注意:此时定向符">"和"<"是不能用的
         */
        //backup();
        load();
    }

    /**
     * 备份检验一个sql文件是否可以做导入文件用的一个判断方法:把该sql文件分别用记事本和ultra
     * edit打开,如果看到的中文均正常没有乱码,则可以用来做导入的源文件(不管sql文件的编码格式如何,也不管db的编码格式如何)
     */
    public static void backup() {
        try {
            Runtime rt = Runtime.getRuntime();
      
            // 调用 mysql 的 cmd:          
            //-uroot -u+数据库用户名
            //-p123456 -p+数据库密码
            //--set-charset=utf8  数据库字符集,设置导出编码为utf8。这里必须是utf8
            //scmsys            
            Process child = rt.exec("mysqldump -uroot -p123456 --set-charset=utf8 scmsys");
           
            // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
            InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
                       
            InputStreamReader isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
           
            String inStr;
            StringBuffer sb = new StringBuffer("");
            String outStr;
            // 组合控制台输出信息字符串
            BufferedReader br = new BufferedReader(isr);
            System.out.println(br.readLine());
            while ((inStr = br.readLine()) != null) {
                sb.append(inStr + "\r\n");
            }
            outStr = sb.toString();
           
            // 要用来做导入用的sql目标文件:
            //"e:/abc.sql" 导出的sql文件名称以及放置路径
            FileOutputStream fout = new FileOutputStream(
                    "e:/abc.sql");
            OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
            writer.write(outStr);
            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
            writer.flush();

            // 别忘记关闭输入输出流
            in.close();
            isr.close();
            br.close();
            writer.close();
            fout.close();

            System.out.println("/* Output OK! */");

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

    }

    /**
     * 导入
     *
     */
    public static void load() {
        try {
            String fPath = "e:/sp.sql";//"e:/sp.sql" sql文件存放硬盘位置
            Runtime rt = Runtime.getRuntime();

            // 调用 mysql 的 cmd:
            Process child = rt.exec("mysql -uroot -p123456 abc");
            OutputStream out = (OutputStream) child.getOutputStream();//控制台的输入信息作为输出流
            String inStr;
            StringBuffer sb = new StringBuffer("");
            String outStr;
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    new FileInputStream(fPath), "utf8"));
            while ((inStr = br.readLine()) != null) {
                sb.append(inStr + "\r\n");
            }
            outStr = sb.toString();

            OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
            writer.write(outStr);
            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
            writer.flush();
            // 别忘记关闭输入输出流
            out.close();
            br.close();
            writer.close();

            System.out.println("/* Load OK! */");

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

    }

		

}
分享到:
评论
1 楼 kinglinma 2012-08-09  
通不过!!!!!!

相关推荐

    java调用mysql命令 导入导出数据库

    在Java编程中,有时我们需要对MySQL数据库进行导入和导出操作,这通常涉及到数据库的备份、迁移或数据恢复。在给定的标题“java调用mysql命令 导入导出数据库”中,我们可以理解为使用Java来执行MySQL的命令行工具,...

    JAVA实现数据库备份与还原

    本文将详细介绍如何利用Java编程语言来实现MySQL数据库的备份与恢复功能。 #### 1. 概述 在实际生产环境中,由于硬件故障、人为操作失误或系统漏洞等原因,可能会导致数据库中的数据丢失。为了避免这种情况的发生...

    mysql数据库数据备份与还原源代码

    本项目提供了一个基于Java Servlet(jsp)的MySQL数据库数据备份与还原的源代码,帮助用户轻松地完成这一任务。 首先,我们要理解数据库备份的重要性。在日常操作中,由于硬件故障、软件错误、恶意攻击或意外删除等...

    java备份与恢复MYSQL数据库

    下面将详细阐述如何使用Java实现MySQL数据库的备份与恢复。 首先,备份MySQL数据库通常涉及两种主要方式:全量备份和增量备份。全量备份是指备份整个数据库,包括所有的表、索引、用户权限等信息。增量备份则只备份...

    mysql(完整、增量)备份与还原

    MySQL数据库在日常运维中扮演着至关重要的角色,因此掌握如何进行完整备份、增量备份与还原是每个IT专业人员必备的技能。在这个主题中,我们将深入探讨如何使用Java来实现这些功能。 首先,让我们理解什么是数据库...

    java mysql 数据库备份和还原操作(csdn)————程序.pdf

    上述代码展示了如何使用Java来实现MySQL数据库的备份和还原操作。以下是对这些操作的详细解释: 首先,代码导入了多个Java库,包括`java.io`包下的类,用于处理输入/输出流,以及`java.util`包下的类,如`Date`和`...

    TXT文件数据导入到mysql数据库

    本主题聚焦于如何将TXT文件中的数据导入到MySQL数据库,这一过程对于数据迁移、数据备份或者数据分析等场景非常实用。首先,我们需要了解TXT文件的格式以及MySQL的数据类型,以便进行有效且准确的数据转换。 TXT...

    MySql和Oracle数据库本地或远程备份导出和导入(JAVA版)工具类.rar

    1. **MySQL数据库备份和导出**: - `mysqldump` 是MySQL提供的一个命令行实用程序,用于生成数据库或表的结构和数据的SQL脚本,以便备份或迁移数据。在使用此JAVA工具类时,需要确保`mysqldump`命令的完整路径已经...

    将excel导入到mysql数据库实例代码

    本教程将详细介绍如何通过编程将Excel数据导入到MySQL数据库中,这对于数据备份和迁移具有重要意义。 首先,我们需要准备以下工具: 1. Excel文件:包含要导入的数据。 2. MySQL服务器:安装并配置好的数据库服务。...

    Linux下的MySQL数据库编程

    在Linux环境下进行MySQL数据库编程是一项基础且至关重要的技能,尤其对于系统管理员和开发人员来说。MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它以其高效、可靠和易用性而受到广泛赞誉。本讲义将围绕...

    JAVA跨数据库导出导入数据:SQL2000 导入到 MYSQL(附件)

    4. **建立连接**:使用Java的JDBC(Java Database Connectivity)API,创建到MySQL数据库的连接。需要包含MySQL的JDBC驱动,如`mysql-connector-java.jar`。 5. **表结构创建**:在MySQL中创建与原数据库类似的表...

    用JAVA将数据库导入csv程序

    在IT行业中,数据的导入与导出是常见的操作,特别是在数据分析、备份或系统迁移时。本项目关注的是如何使用Java编程语言将数据库中的记录导出为CSV(Comma Separated Values)格式的文件。CSV因其通用性和易于处理的...

    Java数据库所需编程软件 Navicat for MySQL

    Java数据库编程通常涉及到与数据库进行交互,以存储和检索数据。Navicat for MySQL是一款流行的数据库管理和开发工具,尤其在Java开发环境中广泛使用。这款软件提供了直观的图形用户界面,使得开发者可以方便地管理...

    MySQL数据库详细介绍pdf(5)

    而mysqlimport则是一个用于导入数据到MySQL数据库的工具,它可以从文本文件中导入数据。除此之外,mysqladmin是一个命令行工具,用于处理MySQL服务器的管理任务,如创建或删除数据库,检查服务器状态等。 编写自己...

    java编写的数据库导入和导出工具

    本项目"java编写的数据库导入和导出工具"旨在简化这个过程,支持对SQL Server和MySQL数据库进行数据的便捷操作。下面我们将详细探讨相关的Java编程知识点、数据库操作以及可能涉及的库和框架。 1. **Java编程基础**...

    数据库备份与恢复

    给出的代码片段展示了如何使用Java编程语言实现数据库的备份和潜在的恢复功能。具体来说: 1. **数据库备份**:代码使用`mysqldump`命令将名为`demo`的数据库导出为一个SQL文件。通过设置用户名、密码和字符集参数...

Global site tag (gtag.js) - Google Analytics