2023年7月13日发(作者:)
Sql Server导出数据至Oracle方法
利用Sql Server的DTS导出
首先,也是最重要的,一定要先设置好要导入到的oracle所对应的数据源驱动。也就是在Windows下创建一个ODBC数据源: 控制面板——管理工具——数据源(ODBC),在"系统 DSN” 项卡中点击添加按钮,选择相关Oracle驱动(数据源需要用到oracle的连接服务,所以如果sqlserver与oracle不在同一台机器上的话,要在sql server所在机器上装oracle客户端,并用oracle客户端建一个连接到oracle数据库的服务,建odbc数据源时,会让你选择该服务)。这一点如果你不配置,那么在后面的Sql Server DTS导出数据到oracle时候,它会有一个默认的数据源驱动,但可能版本太早,里面的字段和oracle 10g有些不兼容,这样会造成后面在导出数据的时候出现一些字段转换失败之类的错误。 下面以我在本机上的操作截图说明一下:
(1)右击数据库,任务--->导出数据:
(2)选择要导出的数据源,如果针对本机数据库,按照默认选项即可,点击下一步:
(3)选择要导入的数据源,这一块就是要注意的地方,oracle 10g 数据源在此处为Oracle provide for OLE DB(安装了不同的oracle,数据源驱动可能不一样,这里不是绝对的),如果没有自己注册oracle 10g数据源的话,它上面默认的有一个Microsoft OLE DB Provider for Oracle,切记一定要自己配置。 (4)选择之后,点击属性按钮,配置自己的oracle数据库数据源,名称和密码,注意选上"允许密码保存"复选框,之后测试是否连接成功。 (5)点击下一步,出现如下视图
(6)选中要导入的表,然后把目标表中的名称改为大写,这块最好也自己配置一些,选中表,点击“编辑映射”,对里面Sql Server自动生成的和oracle 10g字段对应关系中不合理的字段进行修改,在oracle 10g里面一般只有Int字段有问题,而默认的oracle注册驱动对于大数据类型nclob,和nvarchar2都多少有些问题,修改以后点击“编辑SQL”按钮,生成最终合适的sql语句。之后一路next,就可完成。
Sql Server、Oracle数据类型转换
Sql Server 数据类型 长度 Oracle数据类型
int
tinyint
bigint
smallint
real
numeric
float
decimal
bit
datetime
smalldatetime
timestamp
image
4
1
8
2
4
9
8
9
1
8
4
8
16
NUMBER(10)
NUMBER(3)
NUMBER(19)
NUMBER(5)
BINARY_FLOAT
NUMBER(18)
BINARY_DOUBLE
NUMBER(18)
NUMBER(2)
DATE
DATE
RAW(8)
BLOB char
nchar
varchar
nvarchar
text
ntext
money
smallmoney
sql_variant
uniqueidentifier
binary
varbinary
可能碰到的问题
10
10
50
50
16
16
8
4
CHAR(10)
NCHAR(10)
VARCHAR2(50)
NVARCHAR2(50)
CLOB
NCLOB
NUMBER(19,4)
NUMBER(10,4)
BLOB
BLOB
RAW(50)
RAW(50)
16
50
50
1. 字段类型转换错误
一般来说,DTS会自动将sql server的数据类型转换为oracle的类型,但有些情况下可能转换有问题,这需要在上述第六步中手动更改。
2. sql server的text类型字段值为空字符串时,oracle的clob字段不接受。
在导入数据时,如果sql server的text类型字段值为空字符串,则oracle会报错,无法导入,所以在导入前,需要批量将sql server text类型的字段值为空字符串的改为null。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689249812a225754.html
评论列表(0条)