一种SqlServer数据迁移到Oracle的方法总结

1.使用BCP命令,导出Sqlserver的数据到csv文件。我们可以把这些命令写成一个cmd命令,语句如下所示:     

CLS
@echo off
for %%F in (.\*.sql) do (
for /f "delims=~" %%a in (%%~dfF) do (
  rem echo "%%a"
  BCP "%%a" queryout "%%~nF.csv" -c -t, -S"ip_address" -d"database_name" -U"user_name" -P"password"
  @rem makecab /d compressiontype=lzx /d compressionmemory=21 "%%~nF.csv" "%%~nF.7z"
  @rem del "%%~nF.csv"
  )
  rem pause
)
pause

ip_address :数据库的IP地址

database_name : 数据库名称

user_name : 数据库用户名

password:数据库密码

sql语句示例如下,注意sql语句的格式,必须在同一行:


select username,userno from t_user

以上的cmd命令与上述sql文件在同一目录下,点击cmd命令,会导出SQL语句查询出的数据,格式为csv。注意必须安装sqlserver环境,上述cmd命令执行才有效,因为里面用到了bcp命令。

 

2.使用sqlldr命令,对应一定的ctl格式,将数据导入到oracle中。

我们同样可以将sqlldr命令写成cmd文件,如下所示:


CLS

@echo off 

  sqlldr username/password@ip:port/instancename control=t_user.ctl errors=1000 rows=1000 log=log.txt bad=err.txt 

pause

对应的ctl文件,如下所示:

load data

infile 't_user.csv'

replace into table tmp_user

fields terminated by ','

OPTIONALLY ENCLOSED BY '"'

TRAILING NULLCOLS

(username,userno)

上述语句表示,将t_user.csv中的数据,导入到tmp_user表中,csv中的列分别对应tmp_user表中的username与userno。

注意,必须安装oracle环境,上述cmd命令才有效。

总结:以上只是提供一种思路,现实中进行跨数据库迁移,也有很多现成的工具可以使用,例如navicat或者其他etl工具等等。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值