這個問題是朋友遇到的,做一個SSIS的程式將資料匯入到txt。然後再用Oracle的工具匯入到Oracle。但是在SSIS中執行變數腳步的時候,發現輸出的列名稱跟查詢的列名稱完全不同。比如Schema_id在查詢的第三列,但是輸出的時候到了第6列。
650) this.width=650;" style="height:182px;width:443px;" alt="SouthEast" src="http://img.blog.csdn.net/20131204105236203?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2V2aW5zcWxzZXJ2ZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="604" height="346" />
650) this.width=650;" style="height:300px;width:440px;" alt="SouthEast" src="http://img.blog.csdn.net/20131204105244906?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2V2aW5zcWxzZXJ2ZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="608" height="493" />
因為txt的格式已經定義好了,而且解析的程式也已經做好,所以如果txt列順序有問題就會影響到後面的操作。查了一下好像沒有地方可以調整輸出量的順序。
當然這個問題可以通過調整目標列的順序解決,但是需要手動的調整,如果列多了比較麻煩。
另外測試了一下直接從Table或者命令查詢就不會有這個問題,感覺微軟在解析變數腳步的時候沒有考慮到排序。
之後發現一篇Blog也提到這個問題:SSIS 系列 - 變數查詢語句引起列輸出順序不一致的解決方案
可以用下面的辦法:
解決的方法雖然也需要人工手動操作,但是比起在檔案管理工具中刪除建立要容易的多,回到資料來源的列,先取消全部可用的列。
650) this.width=650;" alt="04123629-3f61655442484c709ac685f84926245" src="http://www.bkjia.com/uploads/allimg/131229/2221294I0-0.png" />
然後對照查詢語句列的順序,依次選中需要的列,比如第一個先勾選 BusinessEntityID,第二個再勾選 NationalIDNumber,後面根據需要按順序依次勾選。
650) this.width=650;" alt="04123918-5f2e8fd7dd574c8f95a229941ff3921" src="http://www.bkjia.com/uploads/allimg/131229/2221295421-1.png" />
按順序選擇完成之後,這樣所有的列又按照查詢順序輸出了。
650) this.width=650;" alt="04123959-0abd2d00a45f46ca9c4f35f0840cdb6" src="http://www.bkjia.com/uploads/allimg/131229/2221296222-2.png" />
需要重建立立新的檔案連結管理器,這樣可以避免之前的緩衝影響,再來看管理器中的列順序也是對應一致的,沒有問題了。
650) this.width=650;" alt="04121041-06b43bb26f32435987945d7ccbdadfc" src="http://www.bkjia.com/uploads/allimg/131229/222129BL-3.png" />
本文出自 “關注SQL Server技術” 部落格,請務必保留此出處http://lzf328.blog.51cto.com/1196996/1335777