zoukankan      html  css  js  c++  java
  • c# winform 实现对postgresql数据库的自动备份还原功能

             //创建进程
            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);
  • 相关阅读:
    C++ 设计模式 —— 訪问者(Visitor)
    图解IIS配置过程
    JSBridge
    10大H5前端框架,让你开发不愁
    具体解释java中的volatilekeyword
    网速变慢解决方法.Tracert与PathPing(转)
    最快下载速度100Mbps!4G LTE技术全解析
    Windows客户端的JProfiler远程监控Linux上的Tomcat
    Java内存泄露原因详解
    JProfiler 解决 Java 服务器的性能跟踪
  • 原文地址:https://www.cnblogs.com/swarb/p/9924468.html
Copyright © 2011-2022 走看看