您的位置:首页 > 数据库

c# winform 实现对postgresql数据库的自动备份还原功能

2014-03-07 12:09 567 查看
    //创建进程

        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);

博客来自:http://blog.csdn.net/swarb/article/details/6935485
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: