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

标签 c# sql-server tsql ssis etl

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

最佳答案

您可以尝试使用 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();

关于c# - 在 SSIS 脚本任务中使用 c# 批量插入到 .CSV 目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47555488/

相关文章:

sql-server - 如何获得SQL Server 2005数据库的独占访问权限来恢复?

c# - Unity UI 文本框动态高度。如何使其根据文本数量扩展?

sql - 使用日期范围对行进行分组

sql - 在 SQL 的单独列中获取计数

php - PDO_DBLIB 对比PDO_SQLSRV

sql - 如何在执行计划中找到Expr####

sql-server - 嵌入在选择查询中的动态 SQL

c# - 使用 EPPlus 从 csv 评估公式

c# - 如何在 Android 的单声道上制作类似 evernote 的菜单

c# - 正则表达式解析两个标记之间的字符串,没有捕获组并排除标记