C#调用Process进行mysql数据库备份和还原
2017-09-18 16:38
302 查看
在工作中,遇到使用c#对mysql数据库进行备份还原的工作,当然使用bat脚本很容易实现。搜索了一下相关资料,发现网上的相关资料大同小异,基本都是幻想copy。自己按照他们的步骤写出来,发现根本不能正常使用,真不知道他们真的有没有实测过!
自己摸索了一下,给出自己的解决步骤:
一:仍然是调用Process这个类,原则上不变,网上的说法都是照抄,实际参数作用不详细,这里给出完整说明:
备份操作:
//创建进程对象
Process proc = new Process();
//调用dos窗口
proc.StartInfo.FileName = "cmd.exe";
//不显示窗体
proc.StartInfo.CreateNoWindow = true;
//设置dos窗口的目录路径,这里就是自己安装mysql的bin目录(我们的mysqldump.exe和mysql.exe所在目录)
proc.StartInfo.WorkingDirectory = @"F:\mysql-5.7.16-winx64\bin";
//允许输入流
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
//执行
proc.Start();
//登陆数据库,这里的内容和我们直接使用dos窗口备份数据库的方式一致,前面是数据库登陆信息,后面是备份路径
proc.StandardInput.WriteLine("mysqldump -uroot -proot warehouse > d://backup//upgrade.sql");
sr.Close();
proc.Close();
还原操作:
//创建进程对象
Process proc = new Process();
//调用dos窗口
proc.StartInfo.FileName = "cmd.exe";
//不显示窗体
proc.StartInfo.CreateNoWindow = true;
//设置dos窗口的目录路径,这里就是自己安装mysql的bin目录
proc.StartInfo.WorkingDirectory = @"F:\mysql-5.7.16-winx64\bin";
//允许输入流
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
//执行
proc.Start();
//登陆数据库,这里的内容和我们直接使用dos窗口登陆数据库的方式一致
proc.StandardInput.WriteLine("mysql -uroot -proot");
//切换到我们需要操作的数据库
proc.StandardInput.WriteLine("use warehouse;");
//先前备份的sql脚本文件读取
StreamReader sr=new StreamReader("d://backup//upgrade.sql");
while (!sr.EndOfStream)
{
//使用WriteLine方法把脚本一行一行进行写入并且执行
proc.StandardInput.WriteLine(sr.ReadLine());
}
sr.Close();
proc.Close();
亲测可用,网上还有用StartInfo.Arguments这个参数进行命令传入执行的,但是个人认为那种方式不好用,也不灵活,如果不熟悉,很容易出错,推荐使用StandardInput.WriteLine这个方法进行命令执行!实际上通过使用mysql的备份和还原,我们可以发现,类似的其它需求同样可以使用这种方式进行操作。比方说调用7z.exe进行解压什么的,大家有兴趣可以自行开发....
自己摸索了一下,给出自己的解决步骤:
一:仍然是调用Process这个类,原则上不变,网上的说法都是照抄,实际参数作用不详细,这里给出完整说明:
备份操作:
//创建进程对象
Process proc = new Process();
//调用dos窗口
proc.StartInfo.FileName = "cmd.exe";
//不显示窗体
proc.StartInfo.CreateNoWindow = true;
//设置dos窗口的目录路径,这里就是自己安装mysql的bin目录(我们的mysqldump.exe和mysql.exe所在目录)
proc.StartInfo.WorkingDirectory = @"F:\mysql-5.7.16-winx64\bin";
//允许输入流
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
//执行
proc.Start();
//登陆数据库,这里的内容和我们直接使用dos窗口备份数据库的方式一致,前面是数据库登陆信息,后面是备份路径
proc.StandardInput.WriteLine("mysqldump -uroot -proot warehouse > d://backup//upgrade.sql");
sr.Close();
proc.Close();
还原操作:
//创建进程对象
Process proc = new Process();
//调用dos窗口
proc.StartInfo.FileName = "cmd.exe";
//不显示窗体
proc.StartInfo.CreateNoWindow = true;
//设置dos窗口的目录路径,这里就是自己安装mysql的bin目录
proc.StartInfo.WorkingDirectory = @"F:\mysql-5.7.16-winx64\bin";
//允许输入流
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
//执行
proc.Start();
//登陆数据库,这里的内容和我们直接使用dos窗口登陆数据库的方式一致
proc.StandardInput.WriteLine("mysql -uroot -proot");
//切换到我们需要操作的数据库
proc.StandardInput.WriteLine("use warehouse;");
//先前备份的sql脚本文件读取
StreamReader sr=new StreamReader("d://backup//upgrade.sql");
while (!sr.EndOfStream)
{
//使用WriteLine方法把脚本一行一行进行写入并且执行
proc.StandardInput.WriteLine(sr.ReadLine());
}
sr.Close();
proc.Close();
亲测可用,网上还有用StartInfo.Arguments这个参数进行命令传入执行的,但是个人认为那种方式不好用,也不灵活,如果不熟悉,很容易出错,推荐使用StandardInput.WriteLine这个方法进行命令执行!实际上通过使用mysql的备份和还原,我们可以发现,类似的其它需求同样可以使用这种方式进行操作。比方说调用7z.exe进行解压什么的,大家有兴趣可以自行开发....
相关文章推荐
- Java程序调用系统命令进行mysql数据库的备份与还原,windows下mysql备份
- 使用C#进行SQL备份和还原
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)
- C#对MySQL数据库的还原与备份,以及带参数形式不是"@"而是"?"
- C# MySQL数据库的备份 还原 初始化
- C# Tip -- C#实现MySQL数据库的备份和还原
- C# MySQL数据库的备份 还原 初始化
- c# .NET 进行数据库备份和还原
- java对mysql数据库进行备份和还原
- C#程序调用cmd执行命令-MySql备份还原
- c# 使用 MySqlBackup 备份或还原 MySql数据库
- C# Tip -- C#实现MySQL数据库的备份和还原
- c# 用SQLDMO 进行sql数据库备份及还原
- Java调用T-SQL进行数据库的备份和还原
- [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。
- 使用mysqldump进行mysql数据库备份还原
- Window服务器 - Java进行Mysql数据库备份与还原
- WPF C#开发中利用SQLDMO进行数据库备份还原操作中的注意点
- 如何使用T-SQL备份还原数据库及c#如何调用执行?
- MySQL数据库的备份与还原