我需要动态插入一堆SQL Server表数据到.CSV文件中,我用于控制流中的每个循环和脚本任务将数据写入CSV文件,目前,我正在逐行阅读从源代码并将其写入CSV文件,这需要花费很多时间,我正在寻找从SQL服务器写入.CSV文件目的地的批量插入选项。我确实花了一些时间研究它,但我找到的只是SqlBulkCopy类选项,它只在目标是SQL Server表的情况下才有效,请你帮我一个适用于SQL Server表作为源和CSV文件的方法目的地。
答案 0 :(得分:0)
您可以尝试使用bcp实用程序
将SQL Server数据导出为CSVbcp "query" queryout data_file -S server_name[\instance_name] -U login_id -P password -c
示例:
bcp "EXEC MyDatatabase.dbo.MyTable" queryout "C:\DataBCP.csv" –c –t , –S (local) –T
您可以使用C#代码中的System.Diagnostics.Process()调用bcp实用程序:
Process p = new System.Diagnostics.Process();
ProcessStartInfo pi = new System.Diagnostics.ProcessStartInfo();
pi.FileName = "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp.exe";
pi.Arguments = "EXEC MyDatatabase.dbo.MyTable\" queryout \"C:\\DataBCP.csv\" –c –t , –S (local) –T";
p.StartInfo = piOriginal;
pi.UseShellExecute = false;
p.Start();
p.WaitForExit();
p.Close();