簡體   English   中英

從我的應用程序備份postgresql數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM