您好,欢迎访问一九零五行业门户网

如何实现MSSQL7.0、Sysbase、Access向Oracle8i移植

随着oracle在中国的广泛应用,许多原来使用ms sql7.0、sysbase、access等数 据库的用户都碰到了数据 移植 的问题。 其实,存在着许多的方法,这里将介绍3 种方法。 1、使用ms sql7.0自带的import/export工具 import/export工具可以方便的把数据 移植 到oracl
随着oracle在中国的广泛应用,许多原来使用ms sql7.0、sysbase、access等数 据库的用户都碰到了数据移植的问题。 其实,存在着许多的方法,这里将介绍3 种方法。
1、使用ms sql7.0自带的import/export工具 import/export工具可以方便的把数据移植到oracle。你需要通过定义odbc for oracle 作为目的源。这样的方法可以保证sql7的绝大部分数据移植到oracl e中去,但预先你必须在oracle建立user 和 相应的tablespace。因为sql7中有 一 些特殊的datatype,如text 、image等。当一个table中有多于一个text或image 的字段时,将出现错误,不能执行。这是你需要做出选择,或者把text 镜像为v archar2(4000),或者镜像为long datatype,但long datatype一个table里只能 有一个。而且,还有可能遇到字符集的问题,最好用第三种方法或者第四种。所 以你遇到这样的情况,可以结合使用第3种方法。
2、使用oracle migration workbanch。 目前的版本是2.2,这个工具可以在http://technet.oracle.com免费下载。 它是oracle提供的一个代替sql*loader的工具,当然目前该工具仍然不能完全取 代sql*loader。使用omwb,只要你定义了odbc for ms sql7 或access或sysbase ,就可以很方便的把tabels、views、triger、procedure、shortnaps、users等 完全转到oracle中去,对于text,可以镜像为clob类型,clob类型可以在一个or acle table里有多列。 image可以镜像为blob。但是遗憾的是,omwb2.2不支持 中 文clob,无论我如何调整,数据migrate到oracle后,都变成了,如果谁有 解 决的方法,别忘了email给我。我对omwb对数据流(如image,video,sound)的控 制非常的欣赏。
3、使用oracle的 sql*loader 使用sql*loader,也许是最不方便的方法,但是是最有效的方法。可以使用 各种方法把源数据导到一个外部分件中。我使用了ms sql7带的bcp工具,可以把 那些特殊多text字段的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.getconnectionjdbc:oracle:thin:@192.16 8.1.52:1521:sonic, sadly, sadly);
connection cn2 =drivermanager.getconnectionjdbc:odbc:sql, sa, ); //联接到数据库,建立到两个数据库的连接
statement s1=cn1.createstatement();
statement s2=cn2.createstatement();
resultset rs1=s2.executequery(select * from users where id>0 and id
int id;
string name=new string(1);
string passwd=new string(1);
string email=new string(1); //执行另一个查询,向目的数据库插入数据
while(rs1.next())
{id=rs1.getint(1);
name=rs1.getstring(name);
passwd=rs1.getstring(passwd);
email=rs1.getstring(email); //system.out.print(id+name+passwd+email);
s1.executequery(insert into bbsuser values(\\+id+\,\\+name+\,\\+pas swd+\,\\+email+\)); } }}
其它类似信息

推荐信息