[英]backup of postgresql database from my application
我有應用程序,其中包含一個基於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.exe
)
pg_dump
是一個工具而不是SQL命令。 您需要使用Process.Start
執行它。
pg_dump輸出一個SQL腳本。 所以你需要一些方法來捕獲標准的SQL腳本。 它可以通過以下方式實現: http : //www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.