繁体   English   中英

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

[英]Backup SQL Server database to a text file(like .csv) using c#

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

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

我想知道是否可以将其命名为backup.csv而不是.bak 我也想知道在“使用”部分中要包括的内容。 任何帮助,将不胜感激。

您可以随意命名输出文件,但这不会使它成为CSV文件。
SQL Backup脚本会在二进制文件中生成备份,并且只能使用适当的工具(例如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命令的简单性

您应该看一下使用C#的Backup SQL。这非常有帮助,我认为应该没有任何命名问题

您也可以从sql Server 2005中做到这一点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM