1

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

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

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

4

2 回答 2

5

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

您对 using 部分没有任何特殊需求。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 命令的简单性

于 2013-09-07T12:55:04.223 回答
0

你应该看看Backup SQL using C#。它很有帮助,我不认为应该有任何命名问题

你也可以从 sql Server 2005 来做看看这个

于 2013-09-07T12:56:43.007 回答