SSIS 执行变量中的脚步输出列顺序与SQL查询列顺序不同
2013-12-04 10:53
225 查看
这个问题是朋友遇到的,做一个SSIS的程序将数据导入到txt。然后再用Oracle的工具导入到Oracle。但是在SSIS中执行变量脚步的时候,发现输出的列名称跟查询的列名称完全不同。比如Schema_id在查询的第三列,但是输出的时候到了第6列。
如图:
因为txt的格式已经定义好了,而且解析的程序也已经做好,所以如果txt列顺序有问题就会影响到后面的操作。查了一下好像没有地方可以调整输出量的顺序。
当然这个问题可以通过调整目标列的顺序解决,但是需要手动的调整,如果列多了比较麻烦。
另外测试了一下直接从Table或者命令查询就不会有这个问题,感觉微软在解析变量脚步的时候没有考虑到排序。
之后发现一篇Blog也提到这个问题:SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法
可以用下面的办法:
解决的方法虽然也需要人工手动操作,但是比起在文件管理器中删除新建要容易的多,回到数据源的列,先取消全部可用的列。
然后对照查询语句列的顺序,依次选中需要的列,比如第一个先勾选 BusinessEntityID,第二个再勾选 NationalIDNumber,后面根据需要按顺序依次勾选。
按顺序选择完成之后,这样所有的列又按照查询顺序输出了。
需要重新建立新的文件链接管理器,这样可以避免之前的缓存影响,再来看管理器中的列顺序也是对应一致的,没有问题了。
如图:
因为txt的格式已经定义好了,而且解析的程序也已经做好,所以如果txt列顺序有问题就会影响到后面的操作。查了一下好像没有地方可以调整输出量的顺序。
当然这个问题可以通过调整目标列的顺序解决,但是需要手动的调整,如果列多了比较麻烦。
另外测试了一下直接从Table或者命令查询就不会有这个问题,感觉微软在解析变量脚步的时候没有考虑到排序。
之后发现一篇Blog也提到这个问题:SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法
可以用下面的办法:
解决的方法虽然也需要人工手动操作,但是比起在文件管理器中删除新建要容易的多,回到数据源的列,先取消全部可用的列。
然后对照查询语句列的顺序,依次选中需要的列,比如第一个先勾选 BusinessEntityID,第二个再勾选 NationalIDNumber,后面根据需要按顺序依次勾选。
按顺序选择完成之后,这样所有的列又按照查询顺序输出了。
需要重新建立新的文件链接管理器,这样可以避免之前的缓存影响,再来看管理器中的列顺序也是对应一致的,没有问题了。
相关文章推荐
- SSIS 执行变量中的脚步输出列顺序与SQL查询列顺序不同 推荐
- 微软BI 之SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法
- SQL Server 查询处理中的各个阶段(SQL执行顺序)
- T-SQL查询处理执行顺序(一)
- T-sql语句查询执行顺序
- sql语句查询执行顺序
- SQL Server 查询处理中的各个阶段(SQL执行顺序)
- GROUP BY分组查询与SQL执行顺序
- SQL Server 查询处理中的各个阶段(SQL执行顺序)
- 从join on和where执行顺序认识T-SQL查询处理执行顺序
- T-SQL 查询语句的执行顺序解析
- SQL Server 查询处理中的各个阶段(SQL执行顺序)
- T-sql语句查询执行顺序
- SQL server T-sql语句查询执行顺序
- 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
- Sql查询--sql语句的执行顺序
- Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量
- GROUP BY分组查询与SQL执行顺序
- sql语句查询执行顺序