程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL7、Sysbase、Access向Oracle8i移植方法

SQL7、Sysbase、Access向Oracle8i移植方法

編輯:關於SqlServer
隨著Oracle在中國的廣泛應用,許多原來使用MS SQL7.0、Sysbase、Access等數據庫的用戶都碰到了數據移植的問題。 其實,存在著許多的方法,這裡將介紹3種方法。

1、使用MS SQL7.0自帶的Import/Export工具

Import/Export工具可以方便的把數據移植到Oracle。你需要通過定義ODBC For Or acle 作為目的源。這樣的方法可以保證SQL7的絕大部分數據移植到Oracle中去,但預先你必須在Oracle建立user 和 相應的tablespace。因為SQL7中有一些特殊的datatype,如text 、image等。當一個table中有多於一個text或image的字段時,將出現錯誤,不能執行。這是你需要做出選擇,或者把text 鏡像為varchar2(4000),或者鏡像為Long datatype,但long datatype一個table裡只能有一個。而且,還有可能遇到字符集的問題,最好用第三種方法或者第四種。所以你遇到這樣的情況,可以結合使用第3種方法。

2、使用Oracle Migration Workbanch。

目前的版本是2.2,這個工具可以在http://technet.oracle.com/免費下載。它是O racle提供的一個代替SQl*Loader的工具,當然目前該工具仍然不能完全取代SQL*Loade r。使用OMWB,只要你定義了ODBC for MS SQL7 或Access或Sysbase,就可以很方便的把 tabels、vIEws、triger、procedure、shortnaps、users等完全轉到Oracle中去,對於 text,可以鏡像為CLOB類型,CLOB類型可以在一個Oracle table裡有多列。 image可以鏡像為BLOB。但是遺憾的是,OMWB2.2不支持中文CLOB,無論我如何調整,數據migrate 到Oracle後,都變成了????,如果誰有解決的方法,別忘了email給我。我對OMWB對數據流(如image,video,sound)的控制非常的欣賞。

3、使用Oracle的 SQL*Loader

使用SQL*Loader,也許是最不方便的方法,但是是最有效的方法。可以使用各種方法把源數據導到一個外部分件中。我使用了MS SQL7帶的BCP工具,可以把那些特殊多te xt字段的tables導出作為外部文件。然後使用SQL*Loader在把這些數據導到Oracle的一個臨時表裡,在對第2中方法出現的????字段進行update。

4、使用程序進行移植
   例子:從SQL7.0向基於Linux下的Oracle數據庫倒入數據:



         程序語言:java



                   與數據庫的連接



                   SQL7.0: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 cn1 =DriverManager.getConnection 



("jdbc:Oracle:thin:@192.168.1.52 :1521:SONIC", "sadly", "sadly");



Connection cn2 =DriverManager.getConnection ("jdbc:odbc:sql", "sa", "");



//聯接到數據庫,建立到兩個數據庫的連接



Statement s1=cn1.createStatement();



Statement s2=cn2.createStatement();



ResultSet rs1=s2.executeQuery("select * from 



 users where id>0 and id<40000 ");



//從數據源中取得數據,定義一些中間變量



int id;



String name=new String("1");



Strin
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved