【问题标题】:Copying a dynamic number of tables into flat files using SSIS使用 SSIS 将动态数量的表复制到平面文件中
【发布时间】:2011-03-21 09:57:52
【问题描述】:

问题

我想将一些表(大约 100 个)复制到单独的平面文件中。这些表的列数不同。

到目前为止

我已经使用 sys 查询提取了我希望复制的表,并使用 for each container 循环遍历每个表。表名存储在一个变量中。每个容器都有一个带有 OLE DB 源组件的数据流任务。这将使用表达式查询提取所有字段(以插入表名)。

现在呢?

我不知道如何将数据保存到平面文件中。每个平面文件都应该将表名作为文件名(可以通过将连接字符串声明为表达式来完成),但我对如何处理和绑定动态列数一无所知。

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    老实说,当您希望循环浏览具有不同列的文件时,SSIS 的性能并不是特别好。在这种情况下,您可能会更好地使用 BCP。它可以直接输出 CSV 文件,并且,如果您可以运行 xp_cmdshell,您可以在 T-SQL 中运行您的每个表。例如,像下面这样...

    declare @bcpsql varchar(8000)
    select @bcpsql = 'bcp <tablename> out c:\<tablename>.txt -c -t, -T -S <yourserver>'
    exec master..xp_cmdshell @bcpsql
    

    链接到 BCP 上的 BOL...http://msdn.microsoft.com/en-us/library/ms162802.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      相关资源
      最近更新 更多