c# - 使用 C# 将 SQL Server 数据库备份到文本文件(如 .csv)

标签 c# sql sql-server csv export-to-csv

我正在创建一个程序,该程序使用只有几个表的简单数据库。我需要在文本文件(如 .csv)中备份和恢复数据库。我尝试了几件事,但似乎都没有用。然后我遇到了以下行:

 sqlcmd = new SqlCommand("backup database  " + dbname + " to disk='" +
 destdir + "\backup.bak", sqlcon);

我想知道我是否可以将其命名为 backup.csv 而不是 .bak。我还想知道“使用”部分要包含哪些内容。任何帮助将不胜感激。

最佳答案

您可以随意命名输出文件,但这不会使其成为 CSV 文件。
SQL 备份脚本在二进制文件中生成备份,并且只能使用适当的工具(如 SQL Server Management Studio 或 RESTORE 脚本)进行恢复

您对 using 部分没有任何特殊需求。 System.Data.SqlClient 是包含执行脚本所需的类 SqlConnectionSqlCommand 的命名空间

达到(至少部分)您的要求的可能解决方法是使用 BCP utility .
当您需要将大量数据从存储介质导入到您的 Sql Server 数据库时,通常需要此实用程序。但 BCP 实用程序也可用于将数据从数据库导出到磁盘上的文本文件中。但是,BCP 需要单个数据表的名称或返回一组数据的 SQL 查询,因此您可能需要多次调用它。
另请注意,BCP 不是 Sql 命令,而是与 SQL Server 一起安装的独立实用程序。

例如(为了更好地解释参数,请查看上面的链接)您可以编写此代码

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "bcp.exe";
psi.Arguments = @"TableOrQueryToExtract out d:\temp\myTableData.txt -T -d MyDataBaseName -w";
Process.Start(psi);

如您所见,您需要为每个需要导出的表调用此代码并将该数据保存在磁盘上的单独文件中(或者编写一个复杂的程序来捕获 BCP 输出并将所有内容连接在一起。在结束时那天,如果您没有获取文本文件的特定要求,我真的建议您选择简单的 BACKUP 命令

关于c# - 使用 C# 将 SQL Server 数据库备份到文本文件(如 .csv),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673495/

相关文章:

c# - 异步写入套接字线程安全吗?

mysql - 我希望具有 zreo 值的 Studentid 表字段不被插入,我通过使用触发器来执行此操作,但它仍然允许插入它们

mysql - 如何按创建时间顺序选择性地显示两个表中的记录

sql - SQL计算一个人的年龄

mysql - 查询搜索网址匹配

sql - 无法通过 SQL 查询替换 Char(63)

java - Java EE Web 应用程序中的无效字符串或缓冲区长度异常

c# - 使用 Json.NET 反序列化复杂对象

c# - 如何在 C# 单元测试中向请求添加测试 cookie

c# - 如何使用Autofac在构造函数中注入(inject)具体实现