SSIS-ssis2008中從sql server 匯資料到informix的方法
發現能夠在SSIS匯到INFORMIX的方法了,這樣就方便多了
以下的方式是使用sql server 2008的ssis,若是使用sql server 2005的ssis,則在寫到目的端之前,要注意一下varchar跟nvarchar的資料型別轉換
step1:連線到SQL SERVER的任一資料庫的TABLE
step2:確定odbc有設連線
step3:在sql server 中建立link server
建立範本
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目的地
Step5:在ssis中的拉一個資料流程工作控制項,進到資料流程頁籤後,再拉一個oledb來源,使用openquery的方式連線informix
Ex:
SELECT c1, c2 FROM OPENQUERY(emis, 'select * from alantest') AS derivedtbl_1
Step6:新增一個ado.net的連線
Step7:將資料欄位對應,下圖紅框的地方,若是用選的話,會呈現"informix"."xxx"
xxx表示你的目的地 table name,要手動改成xxx,如下圖的方式才可以
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;