コマンドラインからデータベースをダンプするには、次のことを行う必要があります。
mysqldump -uroot --password= myDb --routines> "C:\s.sql"
したがって、プログラムで試すのはこれだけです。これは、私が推測する直接的な解釈です。
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = dumpUtilityPath;
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.Arguments = "-uroot --password= myDb --routines> \"C:\\s.sql\"";
Process process = Process.Start(psi);
process.WaitForExit();
process.Close();
これはまったく機能しません。代わりに、ネット全体で見つけることができるこれを選択する必要があります。これも機能します。
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = dumpUtilityPath;
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.Arguments = string.Format("-R -u{0} --password={1} -h{2} {3} --routines", "root", "", "localhost", "myDb");
Process process = Process.Start(psi);
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
using (StreamWriter writer = new StreamWriter("C:\\s.sql"))
{
writer.WriteLine(output);
writer.Close();
}
コマンドプロンプトのコマンドから直接実行できるSQLファイルでデータベースを取得するためにストリームライターを使用する必要があるのはなぜですか?
2番目のブロックでの-Rの役割は何ですか?