C# mysql 备份还原表

protected void btnCommit_Click(object sender, EventArgs e)
    {
        if (GridViewDBBackupList.SelectedIndex == -1)
        {
            ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), "", "alert(\"没有选择要恢复的备份!\");", true);
        }
        else
        {
            DataTable dt = common.getDataTable("select * from prodoc_jc_dbbackuprestore where id=" + GridViewDBBackupList.SelectedDataKey["id"].ToString());
            if (dt != null && dt.Rows.Count > 0)
            {
                string filePath = @"" + System.Configuration.ConfigurationManager.AppSettings["dbbackuppath"].ToString();
                string fileName = dt.Rows[0]["fileName"].ToString();
                if (File.Exists(filePath + "\\" + fileName))//d:\dbbackup\db.sql"))
                {
                    string str = common.CallExe(@"mysql -uroot -p" + System.Configuration.ConfigurationManager.AppSettings["mysqlrootpwd"].ToString() + " " + System.Configuration.ConfigurationManager.AppSettings["mysqldbname"].ToString() + "<" + filePath + "\\" + fileName);//d:\dbbackup\db.sql");
                    if (str.Equals("OK"))
                    {
                        ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), "", "alert(\"还原成功!\");closeBackupList();", true);// common.popUpMessage(this.Page, );
                        string sql = string.Empty;
                        sql = "insert into prodoc_jc_dbbackuprestore(type,filePath,fileName,autoORmanu";
                        if (Session["userRealName"] != null)
                            sql += ",createPerson";
                        sql += ")";
                        sql += " values(1,'" + filePath + "','" + fileName + "',1";
                        if (Session["userRealName"] != null)
                            sql += ",'" + Session["userRealName"].ToString() + "'";
                        sql += ")";
                        common.executeNoQuery(sql);

                        bindData();
                        bindDataForBackupList();
                    }
                }
                else
                    //common.popUpMessage(this.Page, "没有找到备份文件!");
                    ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), "", "alert(\"没有找到备份文件!\");", true);
            }
        }
    }
#region backup button
    protected void btnBackup_Click(object sender, EventArgs e)
    {
        if (Session.Count == 0)
        {
            common.execJavaScript(this.Page, "window.top.location.href='../login.aspx';");
            return;
        }
        string filePath = string.Empty;
        filePath = @"" + System.Configuration.ConfigurationManager.AppSettings["dbbackuppath"].ToString();
        if (!Directory.Exists(filePath))
            common.CallExe(@"mkdir " + filePath);
        string fileName = "dbbackup" + System.DateTime.Today.ToString("yyyyMMdd") + System.DateTime.Now.ToLongTimeString().Replace(":", "") + ".sql";
        string str = common.CallExe(@"mysqldump -uroot -p" + System.Configuration.ConfigurationManager.AppSettings["mysqlrootpwd"].ToString() + " " + System.Configuration.ConfigurationManager.AppSettings["mysqldbname"].ToString() + " --ignore-table=" + System.Configuration.ConfigurationManager.AppSettings["mysqldbname"].ToString() + ".prodoc_jc_dbbackuprestore>" + filePath + "\\" + fileName);
        if (str.Equals("OK"))
        {
            ScriptManager.RegisterClientScriptBlock(this.Page, GetType(), "", "alert(\"备份成功!\");closeBackupList();", true);
            string sql = string.Empty;
            sql = "insert into prodoc_jc_dbbackuprestore(filePath,fileName,autoORmanu";
            if (Session["userRealName"] != null)
                sql += ",createPerson";
            sql += ")";
            sql += " values('" + filePath + "','" + fileName + "',1";
            if (Session["userRealName"] != null)
                sql += ",'" + Session["userRealName"] + "'";
            sql += ")";
            common.executeNoQuery(sql);
            bindData();
        }
    }
    #endregion

    #region 功能:执行dos命令;参数:一个,要执行的dos命令;返回值:成功,OK;失败,错误信息
    public string CallExe(string argm)
    {
        Process p = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "cmd.exe"; //设定需要执行的命令
        startInfo.Arguments = "/C " + argm; //  设定参数,其中的“/C”表示执行完命令后马上退出
        startInfo.UseShellExecute = false; //不使用系统外壳程序启动
        startInfo.RedirectStandardInput = false; //不重定向输入
        startInfo.RedirectStandardOutput = true; //重定向输出
        startInfo.CreateNoWindow = true; //不创建窗口
        p.StartInfo = startInfo;
        try
        {
            if (p.Start()) //开始进程
            {
                //if (milliseconds == 0)
                p.WaitForExit(); //这里无限等待进程结束
                //else
                //p.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒                
            }
        }
        catch (Exception ex)
        {
            return ex.ToString();
        }
        finally
        {
            if (p != null)
                p.Close();
        }
        return "OK";
    }
    #endregion
mysqldump -uxxx -pxxx --ignore-table=database.table1 --ignore-table=database.table2 > backup.sql
 mysqldump -uxxx -pxxx table1 table2 … > backup.sql

你可能感兴趣的:(mysql)