如何實現MS SQL
Sysbase
Access向Oracle
i移植
隨著Oracle在中國的廣泛應用
許多原來使用MS SQL
Sysbase
Access等數據庫的用戶都碰到了數據移植的問題
其實
存在著許多的方法
這裡將介紹
種方法
使用MS SQL
自帶的Import/Export工具
Import/Export工具可以方便的把數據移植到Oracle
你需要通過定義ODBC For Oracle 作為目的源
這樣的方法可以保證SQL
的絕大部分數據移植到Oracle中去
但預先你必須在Oracle建立user 和 相應的tablespace
因為SQL
中有一些特殊的datatype
如text
image等
當一個table中有多於一個text或image的字段時
將出現錯誤
不
能執行
這是你需要做出選擇
或者把text 鏡像為varchar
(
)
或者鏡像為Long datatype
但long datatype一個table裡只能有一個
而且
還有可能遇到字符集的問題
最好用第三種方法或者第四種
所以你遇到這樣的情況
可以結合使用第
種方法
使用Oracle Migration Workbanch
目前的版本是
這個工具可以在免費下載
它是Oracle提供的一個代替SQl*Loader的工具
當然目前該工具仍然不能完全取代SQL*Loade
r
使用OMWB
只要你定義了ODBC for MS SQL
或Access或Sysbase
就可以很方便的把
tabels
views
triger
procedure
shortnaps
users等完全轉到Oracle中去
對於text
可以鏡像為CLOB類型
CLOB類型可以在一個Oracle table裡有多列
image可以鏡像為BLOB
但是遺憾的是
OMWB
不支持中文CLOB
無論我如何調整
數據migrate到Oracle後
都變成了????
如果誰有解決的方法
別忘了email給我
我對OMWB對數據流(如image
video
sound)的控制非常的欣賞
使用Oracle的 SQL*Loader
使用SQL*Loader
也許是最不方便的方法
但是是最有效的方法
可以使用各種方法把源數據導到一個外部分件中
我使用了MS SQL
帶的BCP工具
可以把那些特殊多text字段的tables導出作為外部文件
然後使用SQL*Loader在把這些數據導到Oracle的一個臨時表裡
在對第
中方法出現的????字段進update
使用程序進行移植
例子
從SQL
向基於Linux下的Oracle數據庫倒入數據
程序語言
java與數據庫的連接
SQL
jdbc
odbc橋
java自帶
Oracle
jdbc
Oracle提供
代碼如下
import java
lang
*;
import java
sql
*;
import oracle
jdbc
driver
*;
//倒入要用到的包
public class hhw extends Object {
public static void main(String args[])
throws SQLException
ClassNotFoundException
//拋出SQLException異常
{
Class
forName(
sun
jdbc
odbc
JdbcOdbcDriver
);
Class
forName (
oracle
jdbc
driver
OracleDriver
);
// 登記驅動程序
准備聯接數據庫
Connection cn
=DriverManager
getConnection (
jdbc:oracle:thin:@
:
:SONIC
sadly
sadly
);
Connection cn
=DriverManager
getConnection (
jdbc:odbc:sql
sa
);
//聯接到數據庫
建立到兩個數據庫的連接
Statement s
=cn
createStatement();
Statement s
=cn
createStatement();
ResultSet rs
=s
executeQuery(
select * from users where id>
and id<
);
//從數據源中取得數據
定義一些中間變量
int id;
String name=new String(
);
String passwd=new String(
);
String email=new String(
);
//執行另一個查詢
向目的數據庫插入數據
while(rs
next())
{id=rs
getInt(
);
name=rs
getString(
name
);
passwd=rs
getStrin(
passwd
);
email=rs
getString(
email
);
//System
out
print(id+name+passwd+email);
s
executeQuery(
insert into bbsuser values(
+id+
+name+
+passwd+
+email+
)
);
}
}}
From:http://tw.wingwit.com/Article/program/Oracle/201311/18137.html