是否有可能使用Npgsql以一种基本上模仿pg_dumpall
的方式到一个单独的输出文件,而无需迭代遍历数据库中的每个表?相反,如果可能的话,我也想能够使用Npgsql来恢复整个数据库。
BeginBinaryExport
、BeginTextExport
或BeginRawBinaryCopy
方法将数据从数据库导出到STDOUT或文件中。在另一方面的过程中,我可以使用BeginBinaryImport
、BeginTextImport
或BeginRawBinaryCopy
方法从STDIN或现有文件中进行导入。然而,根据我目前所能找到的资料,这些方法使用COPY
SQL语法,该语法(据我所知)仅限于一张表。
我为什么要问这个问题? 我现在有一个旧的批处理文件,用于使用pg_dumpall.exe
将生产数据库导出到文件中,然后再使用psql.exe
和<
操作将其导入到我的测试环境中。这已经运行得相当顺畅了一段时间,但我们最近将服务器迁移到了外部托管环境,导致延迟,阻止了批处理文件的成功完成。由于其他连接/超时问题的可能性,我考虑将批处理文件的功能移植到.NET应用程序中,但这部分让我有点困惑。
感谢您的帮助,如果需要进一步的澄清,请告诉我。
Process
对象来启动pg_dump
可执行文件(我将努力实现以替换我的批处理文件),并且我了解尝试在Npgsql中实现功能的“危险”。即便如此,如果能够有一个可用于此目的的方法而无需诉诸于这种策略,那将是很好的。如果您决定这样做,我很乐意帮助测试。 - G_Hosa_Phat