//创建进程
public static void StartCmd(String workingDirectory, String command)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = workingDirectory;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(command);
p.StandardInput.WriteLine("exit");
p.Close();
}
//构建执行的命令
StringBuilder sbcommand = new StringBuilder();
sbcommand.AppendFormat("pg_dump.exe -h localhost -p 5556 -U pgs -Fc -b -v -f\"{0}\" tj", @path);
String command = sbcommand.ToString();
//获取pg_dump.exe所在路径
String appDirecroty = @"C:\Program Files\pgsql\bin";
StartCmd(appDirecroty, command);
string backtime = time.ToString("yyyy年MM月dd日HH点mm分ss秒");
string sql = "insert into backup(version,date,path)values('1.0.7','" + backtime + "','" + path2 + "')";
MainFrmClient mfClient = new MainFrmClient();
mfClient.ExecSql(sql);
DataBind();
MessageBox.Show("恭喜,备份成功!");
//数据库还原
OpenFileDialog file = new OpenFileDialog();
file.Title = "打开文件";
file.Filter = "备份文件(*.backup)|";
file.InitialDirectory = "D:\\backup\\"; //默认路径
file.Multiselect = false;
if (file.ShowDialog() == DialogResult.OK)
{
//构建执行的命令
StringBuilder sbcommand = new StringBuilder();
sbcommand.AppendFormat("pg_restore.exe -h localhost -p 5556 -U pgs -d test -v \"{0}\"", file.FileName);
String command = sbcommand.ToString();
//获取pg_dump.exe所在路径
String appDirecroty = @"C:\Program Files\pgsql\bin";
StartCmd(appDirecroty, command);
MessageBox.Show("恭喜,还原成功!");
}
//对postgresql数据库内某一模式备份命令:
//h:主机IP,p:端口, U:用户名,f:备份文件存储位置,
sbcommand.AppendFormat("pg_dump.exe -h localhost -p 5556 -U pgs -Fc -v -f \"{0}\" --schema \"{1}\" tjtz", path, schemaName);
String command = sbcommand.ToString();
还原该模式数据时同上还原:
sbcommand.AppendFormat("pg_restore.exe -h localhost -p 5556 -U pgs -d test -v \"{0}\"", file.FileName);