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

use*_*875 1 c# sql sql-server csv export-to-csv

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

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

我想知道我是否可以命名backup.csv而不是.bak.我还想知道在"使用"部分包含哪些内容.任何帮助,将不胜感激.

Ste*_*eve 5

您可以根据需要为输出文件命名,但这不会使其成为CSV文件.
SQL备份脚本在二进制文件中生成备份,只能使用SQL Server Management Studio或RESTORE脚本等相应工具进行恢复.

您对使用部分没有任何特殊需求.该System.Data.SqlClient是包含类的命名空间SqlConnection,并SqlCommand执行脚本需要

达到(至少部分)您的要求的可能解决方法是使用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);
Run Code Online (Sandbox Code Playgroud)

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