这个问题是朋友遇到的,做一个SSIS的程序将数据导入到txt。然后再用Oracle的工具导入到Oracle。但是在SSIS中执行变量脚步的时候,发现输出的列名称跟查询的列名称完全不同。比如Schema_id在查询的第三列,但是输出的时候到了第6列。
如图:
因为txt的格式已经定义好了,而且解析的程序也已经做好,所以如果txt列顺序有问题就会影响到后面的操作。查了一下好像没有地方可以调整输出量的顺序。
当然这个问题可以通过调整目标列的顺序解决,但是需要手动的调整,如果列多了比较麻烦。
另外测试了一下直接从Table或者命令查询就不会有这个问题,感觉微软在解析变量脚步的时候没有考虑到排序。
之后发现一篇Blog也提到这个问题:SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法
可以用下面的办法:
解决的方法虽然也需要人工手动操作,但是比起在文件管理器中删除新建要容易的多,回到数据源的列,先取消全部可用的列。
然后对照查询语句列的顺序,依次选中需要的列,比如第一个先勾选 BusinessEntityID,第二个再勾选 NationalIDNumber,后面根据需要按顺序依次勾选。
按顺序选择完成之后,这样所有的列又按照查询顺序输出了。
需要重新建立新的文件链接管理器,这样可以避免之前的缓存影响,再来看管理器中的列顺序也是对应一致的,没有问题了。