.net - 使用 Npgsql 提供程序 (.NET) 执行 sql 文件

标签 .net sql file postgresql npgsql

我在 .NET 4.0 中使用 Postgres 数据库工作,因此使用了 Npgsql dll。 我似乎无法在任何地方找到如何直接使用命令执行 sql 文件。

它应该与使用 -f 参数启动 psql.exe 时的效果相同,但随后在 .NET 代码中。

例如,现在你有:

var cmd = new NpgsqlCommand(conn);
cmd.ExecuteNonQuery("insert into...");

我需要这样的东西:

var cmd = new NpgsqlCommand(conn);
cmd.ExecuteFile("C:\... .sql");

我可以读取整个文件并将其作为命令字符串执行,但奇怪的是,这并没有相同的效果。

非常感谢任何帮助。

最佳答案

为什么不写一个简单的扩展方法:

public static int ExecuteFile(this NpgsqlCommand cmd, string filename)
{
     string strText = System.IO.File.ReadAllText(filename, System.Text.Encoding.UTF8);
     cmd.CommandText = strText;
     return cmd.ExecuteNonQuery();
}

或者您可能想使用自定义编码,如 System.Text.Encoding.Default 或其他,然后使用

public static int ExecuteFile(this NpgsqlCommand cmd, string filename, System.Text.Encoding enc)
{
     string strText = System.IO.File.ReadAllText(filename, enc);
     cmd.CommandText = strText;
     return cmd.ExecuteNonQuery();
}

如果你在命名空间 Npgsql 的静态类中声明它,那么你甚至不需要额外的包含。

关于.net - 使用 Npgsql 提供程序 (.NET) 执行 sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19510685/

相关文章:

.net - 如何设置.Net WebClient::UploadString() 的内容类型?

MySQL在Join语句中创建动态表名

mysql - SQL查询以获取以ios应用程序的某些特定行开头的表中的数据

c - 如何知道 C 语言中是否存在文件?

c# - 如何将服务添加到 .Net 中属性网格的类型描述符上下文?

c# - 什么事件捕捉到 DataGridViewCell 中组合框中值的变化?

sql - SUM()、GROUP BY 和 WHERE

java - 在Java中查找特定文件夹

c# - C# 将数据保存到文件中

c# - 事件通知引擎 - MSMQ