批量在SSIS脚本任务中使用c#插入.CSV目标文件

时间:2017-11-29 14:46:34

标签: c# sql-server tsql ssis etl

我需要动态插入一堆SQL Server表数据到.CSV文件中,我用于控制流中的每个循环和脚本任务将数据写入CSV文件,目前,我正在逐行阅读从源代码并将其写入CSV文件,这需要花费很多时间,我正在寻找从SQL服务器写入.CSV文件目的地的批量插入选项。我确实花了一些时间研究它,但我找到的只是SqlBulkCopy类选项,它只在目标是SQL Server表的情况下才有效,请你帮我一个适用于SQL Server表作为源和CSV文件的方法目的地。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用bcp实用程序

将SQL Server数据导出为CSV

enter image description here

bcp "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();