mysqldump 忽略视图_Mysql备份迁移——Mysqldump(.NET调用Mysqldump.exe方式)——(解决视图嵌视图报错)...

string strError = string.Empty;//执行cmd获取输出信息。

Process p= newProcess();

p.StartInfo.FileName= "cmd.exe";

p.StartInfo.RedirectStandardInput= true;

p.StartInfo.UseShellExecute= false;

p.StartInfo.RedirectStandardOutput= true;//获取输出流//p.StartInfo.RedirectStandardInput = true;

p.StartInfo.RedirectStandardError = true;//获取错误信息流

p.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;

p.StartInfo.CreateNoWindow= true;//除数据外,表结构、视图、存储过程、函数、事件全部导出

p.Start();

p.StandardInput.WriteLine("c:");

p.StandardInput.WriteLine("cd C:\\Program Files (x86)\\MySQL\\MySQL Server 5.1\\bin");

p.StandardInput.WriteLine("mysqldump -h 192.168.0.1 -P3306 -uroot -p123456-q -d -R -E --skip-add-drop-table --default-character-set=utf8

--extended-insert=falseMysqlDBName> c:\MysqlDBNameNoData.sql");//-q 快速读取,-d不导数据,-R存储存储过程和函数,--extended-insert=false 逐行执行(视图嵌视图时需要用到),-E 导出事件,--add-drop-tables 删除表,--skip-add-drop-table不删除表

p.StandardInput.WriteLine("exit");

p.BeginOutputReadLine();

strError=p.StandardError.ReadToEnd();

p.WaitForExit();if (!string.IsNullOrWhiteSpace(strError))//执行失败则跳出

{return;

}//去除DEFINER(如果数据库在不同的服务器,很可能会有权限问题,将权限这部分代码替换掉)

StreamReader sr = newStreamReader(storeDBnoDataPath); Regex rg3 = new Regex("DEFINER=`.{1,50}`@`%`");//如果用户名比较长,这里可以设置的更长一些,但不要过度长,否则会替换掉需要的数据string sql =sr.ReadToEnd();

sr.Close(); string strOutput = rg3.Replace(sql, "");

StreamWriter sw= new StreamWriter(storeDBnoDataPath, false, System.Text.Encoding.UTF8);

sw.Write(strOutput);

sw.Close();//除数据外,表结构、视图、存储过程、函数、事件全部导入

p.Start();

p.StandardInput.WriteLine("c:");

p.StandardInput.WriteLine("cd C:\\Program Files (x86)\\MySQL\\MySQL Server 5.1\\bin");p.StandardInput.WriteLine("mysql -h 192.168.0.2 -P3306 -uroot -p123456 MysqlDBName

p.StandardInput.WriteLine("exit");

strError=p.StandardError.ReadToEnd();

p.WaitForExit();if (!string.IsNullOrWhiteSpace(strError))//执行失败则跳出

{return;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值