加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据迁移:从SqlServer到Oracle

发布时间:2020-12-12 14:03:09 所属栏目:MsSql教程 来源:网络整理
导读:??? 要把SqlServer中的数据迁移到Oracle有多种方法。如果数据量小,可以直接使用Sql语句生成器(SqlDataToScript.exe)直接生成sql语句。如果数据量大,建议使用Sql Loader工具进行数据迁移。 ???? 具体步骤如下: ???? 1.创建中间库表。 ???? 之所以需要创建
??? 要把SqlServer中的数据迁移到Oracle有多种方法。如果数据量小,可以直接使用Sql语句生成器(SqlDataToScript.exe)直接生成sql语句。如果数据量大,建议使用Sql Loader工具进行数据迁移。 ???? 具体步骤如下: ???? 1.创建中间库表。 ???? 之所以需要创建中间库表是因为,SqlServer中的源数据表结构,字段名可能与Oracle目标数据表结构,字段不一致。创建与Oracle中目标数据表一致的的中间库表有助于最终数据的导入。并且保留一个数据备份。 ?????(另外,考虑到建表时由于其他原因可能会反复建或者新增表,建议在新建表前都先判断一下数据表是否已经存在于数据库中。 ???? if EXISTS (select COUNT(*) from sysobjects where upper(name) ='Table1')
??????? drop TABLE Table1

?????create table Table1(...)

??? )???? ??? 2.初始化中间库数据。 ??? 将SqlServer中的源数据经过一定的转化插入到中间库表中。 ??? 3.导出中间库数据。 ??? 导出命令如下:bcp.exe [DataBase].[dbo].TableName out "pathTableName.txt"? -c -r"℡" -t"||" -S "IP" -U "UserName" -P "PassWord" ??? bcp命令的具体格式可以直接到网上搜索。把所有表的导出命令写到一个txt文件中,并改文件扩展名为bat。 ??? 4.编写数据表控制文件。 ????每个表编写一个控制文件,文件的扩展名为ctl。具体内容如下 ???? LOAD DATA
CHARACTERSET ZHS16GBK
INFILE 'pathTableName.txt' "str X'A959'"
APPEND INTO TABLE TableName
FIELDS TERMINATED BY "||"
TRAILING NULLCOLS
(
FieldName1,FieldName2...
)
???? 如果表中有时间类型字段需要做点转换。FIELDTIME"to_date(substr(:FIELDNAME,1,19),'yyyy-mm-dd HH24:mi:ss')" ??? 5.编写数据表的导入文件。 ??? 每个表编写一个导入命令文件,文件扩展名为bat。具体内容如下: ??? 盘符:
??? cd 盘符:控制文件上一层地址
??? sqlldr 用户名/密码@数据库名 Control="ctrlTableName.ctl" log="logTableName.log"??? Bad="databadTableName.bad" Errors=100? Rows=1000 BindSize=3072000 StreamSize=3072000 ReadSize=839288
move /y dataTableName.txt? databakTableName.txt
pause
? ???? 当数据表较多时,可以在Oracle数据库中建一个Package自动生成需要迁移的表的控制文件和导入命令文件。 ???? 6.建一个批量执行导入文件的bat文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读