【发布时间】:2009-05-13 09:30:46
【问题描述】:
如何通过 .Net 代码运行 SQL Server 的批量复制程序 (BCP) 实用程序?
【问题讨论】:
标签: asp.net sql-server
如何通过 .Net 代码运行 SQL Server 的批量复制程序 (BCP) 实用程序?
【问题讨论】:
标签: asp.net sql-server
看看SqlBulkCopy 类。还有another article 的例子。
【讨论】:
您可以在 Command 对象中执行此 SQL 命令
BULK INSERT <TableName> from '<FileName>' with (FORMATFILE='<FmtFile>')
用正确的项目名称替换尖括号中的项目
【讨论】:
以下是一些可能的选项:
...和
【讨论】:
我迟到了,但可能对其他人有帮助。
我已经测试过这段代码。
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExportLargeData
{
class Program
{
static void Main(string[] args)
{
string strCmdText;
strCmdText = "/C bcp databasname..tablename out D:\\NewFolder\\filename.csv -S .\\ -c -C RAW -T";
重要的是参数以 /C 开头,否则它将不起作用。在 -S 之后,您必须在我的情况下传递 SQL Server 实例,它是本地的,所以我通过 .\
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = strCmdText;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
process.Close();
process.Dispose();
}
}
}
如果你想执行存储过程,那么命令将是
string proc = "Exec database..storedprocedurename";
string strCmdText = "/C bcp "+ proc + " queryout D:\\NewFolder\\filename.csv -T -c -S .\\";
【讨论】: