sqlserver迁移到oracle具体实现
一、需求背景
因业务发展需要,需要对各地数据进行集中管理,其中各地系统都是sqlserver2000数据库,数据大量集中,需要使用sqlserver2008数据库,因此涉及sqlserver2000数据迁移至sqlserver2008数据库的问题。
二、处理步骤
处理步骤分为初始导出和增量交换两个操作步骤进行。
1 、其中初始导出设定一个时间截止时间将之前的业务数据利用数据库导出功能将数据导出,数据导出后由文件交换服务器传送的方式将初始导出数据导入到sqlserver2008数据库服务器中,然后通过bcp工具将数据导入。
2、增量交换在初始导出设定一个时间截止后开始启用,增量交换就是在初始导出完成后,将有变更的数据形成文件,由文件交换服务器传送,最终同步到sqlserver2008数据库服务器中,
然后通过bcp工具将数据导入,与初始导出不同的是,这里要通过程序控制导出的增量数据和导出文件名。
三、初始导出
1.业务数据
业务数据初始导出将利用数据库导出功能将数据以文件的方式拷贝到sqlserver2008数据库服务器进行导入。
步骤:
1) 业务数据导成文件
2) 业务数据文件拷贝到oracle数据库服务器进行导入
2.实现
2.1.利用导出导入工具实现异构数据迁移
1)sqlserver2000初始数据利用bcp工具导成txt格式文件
--sqlserver数据导成文件
--预先创建导出表格式文件:
p_cmdshell 'bcp master.dbo.sysusers format nul -T -c -f "c:\students.fmt"'
--根据格式文件导出表数据(可以导成txtcsv文件格式)
修改格式文件,用逗号分隔符
declare @sql varchar(8000) 
set @sql='bcp "SELECT * FROM master..sysusers" queryout "c:\aa.txt" /f "c:\students.fmt"'   
p_cmdshell @sql
2) bcp工具将初始数据导入sqlserver2008数据库服务器
--先开启cmdshell
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
--创建测试表
select * into test from sysusers where 1<>1
--bcp工具直接导入数据
declare @sql varchar(8000) 
set @sql='st in c:\aa.txt -f c:\students.fmt -SCRMSERVER\BOSSSOFT -U"sa" -P"123456" -e"c:\"'   
p_cmdshell @sql
--查询数据是否导入
select * from test
四、增量交换
1.业务数据
业务数据增量交换将利用数据库导出功能将数据以文件的方式拷贝到oracle数据库服务器进行导入。
步骤:
3) 业务数据导成文件
4) 业务数据文件拷贝到oracle数据库服务器进行导入
2.实现
2.1.利用导出导入工具实现异构数据迁移
sql数据库迁移另一个硬盘1)sqlserver2000初始数据利用bcp工具导成txt格式文件
--sqlserver数据导成文件
--预先创建导出表格式文件:
p_cmdshell 'bcp master.dbo.sysusers format nul -T -c -f "c:\students.fmt"'
--根据格式文件导出表数据(可以导成txtcsv文件格式)
修改格式文件,用逗号分隔符
declare @sql varchar(8000) 
set @sql='bcp "SELECT * FROM master..sysusers" queryout "c:\aa.txt" /f "c:\students.fmt"'   
p_cmdshell @sql
2) bcp工具将初始数据导入sqlserver2008数据库服务器
--先开启cmdshell
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
--创建测试表
select * into test from sysusers where 1<>1
--bcp工具直接导入数据
declare @sql varchar(8000) 
set @sql='st in c:\aa.txt -f c:\students.fmt -SCRMSERVER\BOSSSOFT -U"sa" -P"123456" -e"c:\"'   
p_cmdshell @sql
--查询数据是否导入
select * from test