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

本文关键字:文件 文本 csv 备份 SQL Server 数据库 使用 | 更新日期: 2023-09-27 18:30:34

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

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

想知道我是否可以将其命名为 backup.csv 而不是.bak.我还想知道在"使用"部分要包含什么。任何帮助将不胜感激。

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

您可以随意

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

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

满足(至少部分)要求的可能解决方法是使用 BCP 实用工具。
通常需要在需要将大量数据从存储介质导入 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# 的备份 SQL。这是非常有帮助的,我认为不应该有任何命名问题

你也可以从SQL Server 2005中做到这一点,看看这个