SSIS对Excel源抽数据问题

kaixin780 2010-07-09 04:52:55
SSIS对Excel源抽数据时,如果Excel某条数据的某个字段类型与数据库对应类型不对,在抽取时如何抛出

这条数据的信息?

例如

id name age

1 leon 28

2 lisa 24

3 tom aaa

抽取到对应数据库,第三条的age是字符型,如果将这条语句抛出?
...全文
548 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hokor 2010-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kaixin780 的回复:]
根据两位的提醒,我在ID设置为主键,如果抽取重复ID可以把数据输出到text文件,但是如果只是age类型不匹配怎么输出呢?我看了一下第三条在抽取过程中3、tom这两个字段都插入到数据库了,还有如何抛出异常,比如错误信息写入txt像这个样子:3,tom,aaa,字段不匹配
id name age
1 leon 28
2 lisa 24
3 tom aaa
[/Quote]
梁哥的做法是没问题,注意Extended Properties属性设置一定要加IMEX=1,否则Age列会丢失数据,因为excle 数据源会以列的第一个值的类型来自动识别列类型,如果Age第一列为数字那么,该列被识别为数字类型,所有非法数据会设置成NULL,插入的时候自然就不会报错,你可以查一下第3列的age字段肯定是NULL。(反之如果Age第一列为字符串则,数字会被设为NULL)可以在源数据组件预览数据,看数据是不是都读入了。
另外excel连接管理器好像没有图形界面修改扩展属性(Extended Properties),智能修改其属性的连接字符串(ConnectionString)例如:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1";

另外即使IMEX=1也不能保证将强制混合数据转换为文本,具体原因见下面这个帖子。
http://topic.csdn.net/u/20070911/16/d21322ee-938b-4cfd-a14f-f0cc91ec55d0.html
kaixin780 2010-07-10
  • 打赏
  • 举报
回复
请大家针对我3楼的问题作出回答,4楼所说的我已经实现了,谢谢四楼描述这么清楚
liangCK 2010-07-10
  • 打赏
  • 举报
回复
添加一个OLEDB源.
路径为excel文件,将Extended Properties属性设置为Excel 5.0;IMEX=1

添加一个OLEDB目标.
选择你的数据库表.类型设置为"表或视图-快速加载".将最大提交大小设置为1
选择映射的列.

再添加一个文本文件目标.
将OLEDB目标的红色约束指向该文本文件目标.错误输出改为"重定向行".
设置文本文件目标文件.即可.
kaixin780 2010-07-10
  • 打赏
  • 举报
回复
根据两位的提醒,我在ID设置为主键,如果抽取重复ID可以把数据输出到text文件,但是如果只是age类型不匹配怎么输出呢?我看了一下第三条在抽取过程中3、tom这两个字段都插入到数据库了,还有如何抛出异常,比如错误信息写入txt像这个样子:3,tom,aaa,字段不匹配
id name age
1 leon 28
2 lisa 24
3 tom aaa
claro 2010-07-09
  • 打赏
  • 举报
回复
平面文件是txt、csv等
hokor 2010-07-09
  • 打赏
  • 举报
回复
新建一个“平面文件目标”组件,并设置,将插入目标组件的错误流指向新建的 平面文件组件,同时设置插入目标组件的错误输出为“重定向行”。

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧