使用SSIS将动态数量的表复制到平面文件中

时间:2011-03-21 09:57:53

标签: sql-server ssis

问题

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

到目前为止

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

现在是什么?

我被困在如何将数据保存到平面文件中。每个平面文件应该具有表名作为文件名(可以通过将connectionstring声明为表达式来完成),但我对如何处理和绑定动态数量的列无能为力。

1 个答案:

答案 0 :(得分: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