非常不幸的一个项目,非常痛苦的项目变更。非常无奈的要从远程数据库导出数据备份
1.没有phpmyadmin之类的数据库管理工具可以用。
2.只有一个ftp目录。
3.只可以向一个aspx网站上传。
只能使用远程命令调用mysqldump。
找来找去,终于找到一个可能的方案,非常不容易啊,特地记录下来。下面是思路要点:
1.使用mysql的mysqldump命令。
2.使用远程计算机的进程来调用mysqldump。
3.需要知道mysqldump.exe的目录。
代码示例:
//导出的文件最终存放在网站的根目录下
string strSaveFileDirctoryPath = Server.MapPath("~/");
//准备启动进程的参数
ProcessStartInfo psi = new ProcessStartInfo("C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqldump.exe");
psi.Arguments = "--default-character-set utf8 -u root(登录的用户名) --password=111111(数据库的登录密码) --database Test(填上你的数据库名) > " + strSaveFileDirctoryPath + "Test_20101020.sql";
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardError = true;
Process pro = Process.Start(psi);
Stream baseStream = pro.StandardOutput.BaseStream;
StreamReader sr = new StreamReader(baseStream, System.Text.Encoding.UTF8);
string strSqldump = sr.ReadToEnd();
FileStream fs = File.Create(strDirctoryPath + "Test_20101020.sql");
byte[] arr = UnicodeEncoding.UTF8.GetBytes(strSqldump);
fs.Write(arr, 0, arr.Length);
fs.Flush();
fs.Close();
pro.Close();
我这样做最后是成功了。但是不保证你在使用时也一定成功,这可能跟服务器的设置有关,所以请一定要验证后再在实际项目中使用。