SSIS-ssis2008中從sql server 匯資料到informix的方法

  • 20226
  • 0
  • SSIS
  • 2011-08-17

SSIS-ssis2008中從sql server 匯資料到informix的方法

發現能夠在SSIS匯到INFORMIX的方法了,這樣就方便多了
以下的方式是使用sql server 2008的ssis,若是使用sql server 2005的ssis,則在寫到目的端之前,要注意一下varchar跟nvarchar的資料型別轉換

step1:連線到SQL SERVER的任一資料庫的TABLE

clip_image001

step2:確定odbc有設連線

clip_image002

step3:在sql server 中建立link server

clip_image003

建立範本

EXEC sp_addlinkedserver

@server = 'XXXX', -- 你想要叫的名稱

@provider = 'MSDASQL', -- 不要變更!

@datasrc = 'XXXX', -- 你在系統的odbc中所設的名稱.

@srvproduct = 'Informix-CLI 3.30 (32 bit)',

@provstr = 'Host=XXXX;Server=XXXX;Service=XXXX;Protocol=olsoctcp;Database=XXX;UID=XXXX;PWD=XXXX'

Step4:在ssis中使用ado.net目的地

clip_image004

Step5:在ssis中的拉一個資料流程工作控制項,進到資料流程頁籤後,再拉一個oledb來源,使用openquery的方式連線informix
Ex:
SELECT c1, c2 FROM OPENQUERY(emis, 'select * from alantest') AS derivedtbl_1

clip_image005

Step6:新增一個ado.net的連線

clip_image004[1]

Step7:將資料欄位對應,下圖紅框的地方,若是用選的話,會呈現"informix"."xxx"

xxx表示你的目的地 table name,要手動改成xxx,如下圖的方式才可以

clip_image007

clip_image009

Step10:成功匯入後查詢informix的table,就可以確認看看資料是否真的有進來

另一是種是用oledb的資料連線當做目的地,應該會比較快些,但informix的版本應該是比較新版,例如9.4以上

執行前置作業sql語法

OLE:

dbaccess sysmaster $INFORMIXDIR/etc/coledbp.sql

Just to let you know for Dot Net

.NET

dbaccess sysmaster $INFORMIXDIR/etc/cdotnet.sql

舊一點的informix,執行上述sql指令的話,會出現The specified table (informix.oledbversion) is not in the database.

那麼怎麼知道informix目前的版本呢?

用下列語法查詢就可以知道

SELECT DBINFO('version', 'major')

FROM systables

WHERE tabid = 1;