如何实现MS SQL SysbaseAccess向Oraclei移植
随着Oracle在中国的广泛应用许多原来使用MS SQLSysbaseAccess等数据库的用户都碰到了数据移植的问题 其实存在着许多的方法这里将介绍种方法
使用MS SQL自带的Import/Export工具
Import/Export工具可以方便的把数据移植到Oracle你需要通过定义ODBC For Oracle 作为目的源这样的方法可以保证SQL的绝大部分数据移植到Oracle中去但预先你必须在Oracle建立user 和 相应的tablespace因为SQL中有一些特殊的datatype如textimage等当一个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就可以很方便的把
tabelsviewstrigerprocedureshortnapsusers等完全转到Oracle中去对于text可以镜像为CLOB类型CLOB类型可以在一个Oracle table里有多列 image可以镜像为BLOB但是遗憾的是OMWB不支持中文CLOB无论我如何调整数据migrate到Oracle后都变成了????如果谁有解决的方法别忘了email给我我对OMWB对数据流(如imagevideosound)的控制非常的欣赏
使用Oracle的 SQL*Loader
使用SQL*Loader也许是最不方便的方法但是是最有效的方法可以使用各种方法把源数据导到一个外部分件中我使用了MS SQL带的BCP工具可以把那些特殊多text字段的tables导出作为外部文件然后使用SQL*Loader在把这些数据导到Oracle的一个临时表里在对第中方法出现的????字段进update
使用程序进行移植
例子从SQL向基于Linux下的Oracle数据库倒入数据
程序语言java与数据库的连接
SQLjdbcodbc桥java自带
OraclejdbcOracle提供
代码如下
import javalang*;
import javasql*;
import oraclejdbcdriver*;
//倒入要用到的包
public class hhw extends Object {
public static void main(String args[])
throws SQLException ClassNotFoundException
//抛出SQLException异常
{
ClassforName(sunjdbcodbcJdbcOdbcDriver);
ClassforName (oraclejdbcdriverOracleDriver);
// 登记驱动程序准备联接数据库
Connection cn =DriverManagergetConnection (jdbc:oracle:thin:@::SONIC sadly sadly);
Connection cn =DriverManagergetConnection (jdbc:odbc:sql sa );
//联接到数据库建立到两个数据库的连接
Statement s=cncreateStatement();
Statement s=cncreateStatement();
ResultSet rs=sexecuteQuery(select * from users where id> and id<
);
//从数据源中取得数据定义一些中间变量
int id;
String name=new String();
String passwd=new String();
String email=new String();
//执行另一个查询向目的数据库插入数据
while(rsnext())
{id=rsgetInt();
name=rsgetString(name);
passwd=rsgetStrin(passwd);
email=rsgetString(email);
//Systemoutprint(id+name+passwd+email);
sexecuteQuery(insert into bbsuser values(+id++name++passwd++email+));
}
}}