好久没有写SSIS了,接着上回的Import Column,这个随笔学习Export Column,这个转换任务用来从数据库中的blob类型的列转换成文件保存到文件系统中或者在Microsoft Word文件或者Microsoft Paint文件中浏览。执行这个task的关键是要有一列包含文件的数据和要导出文件的路径。Export Column会将数据列转换成物理文件,并按照完全限定的路径保存这些文件。
在下面的例子中,将把数据库AdventureWorks中的一个文件列导出。如果你安装了数据库AdventureWorks,在这个数据库中有一个包含文件的表 [Production].[document],表中有一个包含word文件的列。现在将这一列文件数据导出。
- 创建一个文件夹C:\exports,导出的文件将放在这个文件夹中
- 新建一个包命名为ExportColumnExample,添加一个Data Flow task双击进入Control Flow界面
- 添加一个OLE DB Data Source,连接到AdventureWorks中的表[Production].[document]
- 预览这个表的数据,可以看到有一个列FileName包含很长一串文件路径和文件名,它们指定了文件的存放路径,我们可以把它修改成简单点的如C:\exports,如图6-12
图6-12 - 添加一个Derived Column任务将OLE DB DataSource和它连接起来。
- 编辑Derived Column,添加一个派生列NewFilePath,编辑表达式为"c:\\exports\\" + Title + ".doc"(注意这里要使用\\,因为要进行转义)。
- 添加一个Export Column转换任务,将Derived Column和它连接起来。Derived Column将会把输入流分成两个类别:可能是文件的一类,可能是文件名字的一类。
- 在Extract Column中选择Document,应为在表[Production].[document]中这一列是文件列,File Path Column中选择NewFilePath,应为这一列是通过Derived Column产生的文件路径。
- 选中Force Truncate,如果相同文件已经存在则覆盖掉,最后如图6-13
图6-13 - 执行报包,如图6-14,可以看到文件夹c:\exports\内已经有9个文件,如图6-15
图6-14
图6-15