將altibase記憶體庫的表匯出到oracle資料庫

BTxigua發表於2009-03-22
將altibase記憶體庫的表匯出到oracle資料庫,目前還沒有比如dblink之類的可以直接使用。我們可以藉助altibase的iloader工具來進行匯出源表的表結構和資料,然後在oracle端藉助sqlldr進行匯入。iloader匯出的資料格式是以'^'來間隔欄位的。

從記憶體庫匯出表:
iloader -s 192.168.0.1 -u username -p passwd -port 20300 \
formout -f table_name.fmt -T table_name
iloader -s 192.168.0.1 -u username -p passwd -port 20300 \
out -f table_name.fmt -d table_name.dat -log table_name.log

table_name.fmt 內容:
table table_name
{
OWNER_ID integer;
OWNER_TYPE integer;
SYS_SVC_TYPE integer;
PRODUCT_ID integer;
ATTR_ID integer;
ATTR_VALUE bigint;
REGION_ID char (1);
ABS_ACTIVE_TIME date;
ABS_INACTIVE_TIME date;
MONTH integer;
VERSION_NO integer;
}
DATEFORM. YYYY/MM/DD HH:MI:SS

table_name.dat的內容
/home/altibase/tmp>more table_name.dat
1000000104017009^0^430418129^99020324^0^99010082^99020082^0^0^20090131164033^20500101000000
2009013000002049^0^430418129^99020324^0^99010082^99020082^0^0^20090201000000^20500101000000
2009013100002167^0^430418129^99030181^0^99000497^99420850^0^0^20090201000000^20500101000000
2009013100002213^0^430418129^99030194^0^99010086^99420850^0^0^20090131161120^20370101000000
2009013100002215^0^430418129^99020068^0^99010068^99020068^0^0^20090131161409^20090131164033
2009013100002222^0^431333326^99030205^0^99010082^99020082^0^0^20090201000000^20500101000000
2009013100002223^0^431333326^99030186^0^99010082^99020082^0^0^20090201000000^20500101000000

這裡的fmt和dat並不是匹配的,我只是為了說明一下格式而已。
根據上面的表結構和dat檔案,可以確定sqlldr用的控制檔案 table_name.ctl:
LOAD DATA
INFILE 'table_name.dat'
INTO TABLE table_name
fields terminated BY '^'
trailing nullcols
(
OWNER_ID           decimal external,
OWNER_TYPE         decimal external,
SYS_SVC_TYPE       decimal external,
PRODUCT_ID         decimal external,
ATTR_ID            decimal external,
ATTR_VALUE         decimal external,
REGION_ID          char ,
ABS_ACTIVE_TIME    date "YYYY/MM/DD HH24:MI:SS",
ABS_INACTIVE_TIME  date "YYYY/MM/DD HH24:MI:SS",
MONTH              decimal external,
VERSION_NO         decimal external
)


然後在oracle庫建立表:
CREATE TABLE table_name
(
OWNER_ID                                 NUMBER,
OWNER_TYPE                               NUMBER,
SYS_SVC_TYPE                             NUMBER,
PRODUCT_ID                               NUMBER,
ATTR_ID                                  NUMBER,
ATTR_VALUE                               NUMBER,
REGION_ID                                CHAR(1),
ABS_ACTIVE_TIME                          DATE,
ABS_INACTIVE_TIME                        DATE,
MONTH                                    NUMBER,
VERSION_NO                               NUMBER
)
;

匯入到oracle庫:
sqlldr username/passwd control=table_name.ctl log=table_name.log direct=true rows=10000

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10867315/viewspace-573380/,如需轉載,請註明出處,否則將追究法律責任。

相關文章