我正在创建一个程序,该程序使用只有几个表的简单数据库。我需要在文本文件(如 .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
是包含执行脚本所需的类 SqlConnection
和 SqlCommand
的命名空间
达到(至少部分)您的要求的可能解决方法是使用 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/