从我的应用程序备份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
也许您可以在您的应用程序中包含 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