0

我正在编写一个应用程序,它应该制作一个数据库的完整副本,然后将它导入到具有不同名称的同一服务器上。
所以,我想我应该使用 mysqldump 和 mysql 以及我应该传递给它们的参数。
好的,但是我无法将转储文件放在我想要的位置,因为我必须知道位置然后将其传递给 mysql。

StringBuilder exportPath = new StringBuilder();
//exportPath.Append(Directory.GetCurrentDirectory());
exportPath.Append(@" > C:\Temp\backup.sql");

Process MySQLDump = new Process();
MySQLDump.StartInfo.UseShellExecute = true;
//MySQLDump.StartInfo.RedirectStandardOutput = true;
MySQLDump.StartInfo.FileName = "mysqldump";
MySQLDump.StartInfo.Arguments = "-u root -proot -h localhost mytable" + exportPath;
MySQLDump.Start();
//string theDump = MySQLDump.StandardOutput.ReadToEnd();
MySQLDump.WaitForExit();
MySQLDump.Close();

我做错了什么,但我不知道是什么。

4

1 回答 1

2

你有两个选择:

  • 不要在命令行中重定向 mysqldump 的输出,而是使用更详细的进程创建并挂钩 mysqldump 的标准输出。这样就可以对文件进行后处理(以哈希为例)并将其写到您想要的位置,或者直接将其运行到导入实例的标准输入中。
  • 明白,那> C:\\Documents and Settings\\admin\\Desktop\\databases\\db.sql不是命令行参数。您需要 sssemble 和参数和重定向部分字符串并使用shell 执行。确保使用绝对路径名。
于 2013-05-10T13:56:46.377 回答