从我的应用程序备份PostgreSQL数据库

本文关键字:PostgreSQL 数据库 备份 应用程序 我的 | 更新日期: 2023-09-27 18:32:22

我有一个应用程序,其中包含一个基于Postgresql的数据库。我想使用我的应用程序备份此数据库。例如。我想单击程序菜单中的选项,并希望获取带有数据库备份的文件。我获得了此数据库的所有管理员权限。应用程序在.net 4.0(C#)和Windows表单中编写。

该如何解决我的问题?


我已经试过了,但它不起作用:

 string zapytanie = @"pg_dump WFR > C:'kopia";
                string pol = Ustawienia.ConnectionString;
                NpgsqlConnection conn = new NpgsqlConnection(pol);
                conn.Open();
                NpgsqlCommand comm = conn.CreateCommand();
                comm.CommandText = zapytanie;
                comm.ExecuteNonQuery();
                conn.Close();

错误:

错误:

42601:语法错误在"pg_dump"处或附近

堆栈跟踪:

w Npgsql.NpgsqlState.<ProcessBackendResponses_Ver_3>d__a.MoveNext()
   w Npgsql.ForwardsOnlyDataReader.GetNextResponseObject()
   w Npgsql.ForwardsOnlyDataReader.GetNextRowDescription()
   w Npgsql.ForwardsOnlyDataReader.NextResult()
   w Npgsql.ForwardsOnlyDataReader..ctor(IEnumerable`1 dataEnumeration, CommandBehavior behavior, NpgsqlCommand command, NotificationThreadBlock threadBlock, Boolean synchOnReadError)
   w Npgsql.NpgsqlCommand.GetReader(CommandBehavior cb)
   w Npgsql.NpgsqlCommand.ExecuteNonQuery()
   w Faktury_i_Rachunki_2.Forms.FrmKopiaBezp.BtUtworzKopie_Click(Object sender, EventArgs e) w D:'nwfr3'Faktury i Rachunki 2.0'Forms'FrmKopiaBezp.cs:wiersz 38

从我的应用程序备份PostgreSQL数据库

也许您可以在您的应用程序中包含 Ms Windows(和所需的 dll)pg_dump.exe二进制文件的副本。然后使用GUI中的适当参数调用它。

(你可以使用 Dependency Walker 找出 pg_dump.exe 需要哪些库)

pg_dump是一个工具,而不是一个SQL命令。您需要使用 Process.Start 执行它。

pg_dump输出一个 SQL 脚本。因此,您需要某种方法来捕获SQL脚本形式的标准。可以通过以下方式实现:http://www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx