一 导出转换组件
导出列转换读取数据流中的数据,并将数据插入到指定的文件中.次转换使用成对的数入列:一列是要输出的数据,一列是将这些数据输出到哪些文件里.转换在处理时,数据将插入到指定的文件中.如果这些文件不存在,转换将创建这些文件,然后将数据写入到文件中.要写入的数据必须具有DT_Text、DT_NTEXT或DT_IMAGE数据类型。
下面的例子中将介绍如何使用该转换工具。本例演示如何将数据库AdVentureWorks中Production.Document表中的Document列导出到文件中。
下面详细了解一下窗口中的允许追加、强制截取以及编写字节顺序列的含义:
列名 |
说明 |
允许追加 |
指定转换是否将数据追加到现有文件中。默认false |
强制截取 |
指定转换在写入数据之前是否删除现有文件的内容。默认值为false |
编写字节顺序 |
指定是否将字节数序标记(BOM)写入文件。只有在数据具有DT_TEXT或DT_NTEXT数据类型,并且未将数据追加到现有数据文件时,才会写入标记(BOM) |
图1-1
图1-2
然后执行该包,结果会报错如图:
在 执行结果中看到如下错误信息
[Export Column [37]] 错误: 无法打开要执行写操作的文件“E:\SSIS\SSISDemo\Export\Crank Arm and Tire Maintenance.doc”。该文件存在且不能被覆盖。如果 AllowAppend 属性为 FALSE,并且 ForceTruncate 属性被设置为 FALSE,则存在该文件将会导致此失败。如何避免这些错误可以参考以下内容:
追加 |
截断 |
文件存在 |
结果 |
False |
False |
否 |
该转换将创建一个新文件并将数据写入到该文件中。 |
True |
False |
否 |
该转换将创建一个新文件并将数据写入到该文件中。 |
False |
True |
否 |
该转换将创建一个新文件并将数据写入到该文件中。 |
True |
True |
否 |
该转换的设计时验证失败。将两个属性都设置为 true 是无效的。 |
False |
False |
是 |
发生运行时错误。文件存在,但转换无法写入到文件中。 |
False |
True |
是 |
转换将删除文件,然后重新创建文件并将数据写入到文件中。 |
True |
False |
是 |
转换将打开文件并将数据写入到文件末尾。 |
True |
True |
是 |
该转换的设计时验证失败。将两个属性都设置为 true 是无效的。 |
二 导入列转换
导入列转换与导出列转换正好相反,它是从文本中读取数据并将数据添加到数据流中的列中.通过此转换,包可以将存储于各个单独文件中的文本和图像添加到数据流中.使用导入列转换要求输入列得数据类型必须是DT_TEXT、DT_NTEXT或DT_IMAGE.
现在来做一个例子介绍一下如何将图像文件导入到AdventureWorks数据库中。
E:\BI资料\IntegrationServices\ImportColumn\1.png
E:\BI资料\IntegrationServices\ImportColumn\2.png
E:\BI资料\IntegrationServices\ImportColumn\3.png
E:\BI资料\IntegrationServices\ImportColumn\4.png
E:\BI资料\IntegrationServices\ImportColumn\5.png
自此整个文件的内容如下:
2.在AdventureWorks数据库中执行下面的sql语句
CREATE TABLE [dbo].[MyImages](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ImageFilePath] [varchar](100) NOT NULL,
[Document] [image] NOT NULL,
[CreateTime] [datetime] NOT NULL,
CONSTRAINT [PK__tblmyIma__3214EC272D47B39A] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
3.新建一个名为“ImportColum”的包,在控制流中拖放一个“Data Flow Task”,然后再连接管理器中创建一个OLE DB 连接用于连接AdventureWorks数据库。如图:
4 在数据流选项卡中,拖放一个平面文件数据源。命名为“Image Source”,然后右键单击编辑,弹出窗口,然后再窗口中,单击新建按钮。数据源设置为: E:\BI资料\IntegrationServices\ImportColumn\PictureInfo.txt。在常规和高级选项中设置如下:
设置成功后,可以单击预览,看一下设置结果:
在下方我们看到一行警告信息。解决此警告信息我们做如下操作。选中框中的名为ImageFilePath的输入列。将FileDataColumnID属性设置为输出列Document的ID即可。如下图红色标注的地方。
设置成功。警告信息消失。此时导入列转换配置成功。
导出、导入组件功能我们学习完毕。谢谢!