今天在用Kettle做数据迁移的时候遇到一个问题,通过Kettle把从SQL Server的源数据导入到Oracle数据库中出现很多问题,也就是因为表信息不一致造成数据无法导入。源数据库SQL Server因为表比较复杂,就直接从SQL Server Mangement Studio手动方式导出建表的SQL语句,具体过程是:选择需要查看的表->右键“编写表脚本为”->CREATE到->文件,这个时候会弹出一个目录保存建表语句内容。目的数据库中需要创建一份一致的表结构,方便从源数据库中加载数据过来。

我们都知道虽然SQL Server和Oracle都支持标准的SQL语句,但是每家厂商的支持方式是有差异的,并不完全一直,而且两家厂商的SQL语句是不可以共用的,这个时候如果要完成数据表的迁移就需要修改建表语句,以支持Kettle可以无障碍迁移数据,特别是两者的数据类型差异还是很大的,所以笔者基于此整理了一份两者差异对比表,供读者查询使用。

SQL Server 数据类型 Oracle 数据类型
bigint NUMBER(19,0)
binary(1-2000) RAW(1-2000)
binary(2001-8000) BLOB
bit NUMBER(1)
char(1-2000) CHAR(1-2000)
char(2001-4000) VARCHAR2(2001-4000)
char(4001-8000) CLOB
date DATE
datetime DATE
datetime2(0-7) TIMESTAMP(7)(对于 Oracle 9 和 Oracle 10);VARCHAR(27)(对于 Oracle 8)
datetimeoffset(0-7) TIMESTAMP(7) WITH TIME ZONE(对于 Oracle 9 和 Oracle 10);VARCHAR(34)(对于 Oracle 8)
decimal(1-38, 0-38) NUMBER(1-38, 0-38)
float(53) FLOAT
float FLOAT
地理 BLOB
geometry BLOB
hierarchyid BLOB
图像 BLOB
int NUMBER(10,0)
money NUMBER(19,4)
nchar(1-1000) CHAR(1-1000)
nchar(1001-4000) NCLOB
ntext NCLOB
numeric(1-38, 0-38) NUMBER(1-38, 0-38)
nvarchar(1-1000) VARCHAR2(1-2000)
nvarchar(1001-4000) NCLOB
nvarchar(max) NCLOB
real real
smalldatetime DATE
int NUMBER(5,0)
smallmoney NUMBER(10,4)
sql_variant N/A
sysname VARCHAR2(128)
text CLOB
time(0-7) VARCHAR(16)
timestamp RAW(8)
tinyint NUMBER(3,0)
uniqueidentifier CHAR(38)
varbinary(1-2000) RAW(1-2000)
varbinary(2001-8000) BLOB
varchar(1-4000) VARCHAR2(1-4000)
varchar(4001-8000) CLOB
varbinary(max) BLOB
varchar(max) CLOB
xml NCLOB

项目使用的MSSQL的sql文件和最终转成ORACLE的sql文件,可以通过Github访问,访问地址如下:
Github代码访问

声明: 本文数据类型比对表非笔者原创,主要引用自笨笨鱼~的博客文章Oracle和sqlserver数据类型对应

参考文献

  1. Oracle和sqlserver数据类型对应

工具:SQL Server和Oracle数据类型比对相关推荐

  1. java实体属性对应mysql和SQL Server 和Oracle 数据类型对应

    1:Java数据类型与MySql数据类型对照表 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 ...

  2. python数据库管理软件_数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接 - Python社区...

    DataGrip :Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, Or ...

  3. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    日常开发中少不了各种可视化数据库管理工具.如果需要同时能连接多种数据库,大家肯定都会想到 DBeaver.Navicat Premium.本文介绍另一个十分好用且强大的工具:DataGrip. Dat ...

  4. SQL语法范例大全(SQL Server、Oracle 通解)

    [书名]SQL语法范例大全(SQL Server.Oracle 通解) [作者]希赛IT发展研究中心  组编 黄少华,陈翠娥  编著 [ISBN]978-7-121-07396-0 [出版社]电子工业 ...

  5. SQL Server 与 ORACLE 的区别

    sql server 与  oracle的区别:    DBMS 数据库管理系统 1.数据类型不同.   sql server 的数据类型:int ,smallint ,char,varchar,nc ...

  6. sql server 与 oracle 的不同,第一感觉。

    1,command sql server:go oracle:/ 2,数据类型 sqlserver        oracle datetime         date numeric        ...

  7. tpc ds 导入到oracle,用TPC-DS测试Sql server,Oracle

    TPC-DS是什么 TPC-DS是TPC组织发布的用于测试决策系统的基准测试,是TPC-H的改进版.我们可以用它生成测试数据集和sql语句来测试数据库的OLAP能力. 最近我们用TPC-DS测试了一下 ...

  8. SQL Server 和 Oracle 以及 MySQL 的区别

    SQL Server 和 Oracle 以及 MySQL 的区别 历史说明区别 > Oracle: 中文译作甲骨文,成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A Rel ...

  9. 网络环境下连接SQL Server和Oracle 19c的方法

    网络环境下连接SQL Server和Oracle 19c的方法 1.SQL Server 2019连接方法 1.1 启动SQL Server 2019配置管理器 因为软件都是64位的,从SQL Ser ...

最新文章

  1. Spring4-@Configuration的使用
  2. EOS 更新合约内部转账方式变化
  3. 从 Java 小白到收获 BAT offer ,分享我这 2 年的经验
  4. @SuppressWarnings(resource)
  5. python灰色预测_灰色系统预测GM(1,1)模型
  6. (HDOJ2039)三角形
  7. php合成图片系统,php图片合成
  8. java实现贪吃蛇小游戏(源码+注释)
  9. 解决 jq ui 弹框 select2 input 失效问题
  10. 在 LaTeX 中插入表格
  11. linux文件误删恢复解决方案
  12. python 检查是否为数字(包括正负数、浮点数)
  13. Java调用不同的打印机实现打印不同小票
  14. python中的魔方方法
  15. 如何制作有素描关系的圆
  16. css 《浮动原理和清除浮动》
  17. unity怎么让模型动起来?
  18. 1扩展组件 --FEBE
  19. 将无法编辑,或者加密的word文档解密,使之可以编辑
  20. 第一个C跨平台工具whoport

热门文章

  1. @MapperScan 和 @Mapper 源码走读
  2. WinForm 简易仿360界面控件
  3. A的特征值与A的矩阵多项式的特征值的关系
  4. 开机即打开Numlock
  5. 北京2008奥运会环境标志
  6. 免费,开源的数字货币收款插件
  7. FVWM安装及配置方法
  8. JDK各版本资源下载(1.7以及以上版本)
  9. 电力电子助力小米快充生态,磁材创新驱动未来无线充电
  10. 软件测试人员必备Linux命令(初,中,高级)