工具:SQL Server和Oracle数据类型比对
今天在用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数据类型对应
参考文献
- Oracle和sqlserver数据类型对应
工具:SQL Server和Oracle数据类型比对相关推荐
- java实体属性对应mysql和SQL Server 和Oracle 数据类型对应
1:Java数据类型与MySql数据类型对照表 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 ...
- python数据库管理软件_数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接 - Python社区...
DataGrip :Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, Or ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
日常开发中少不了各种可视化数据库管理工具.如果需要同时能连接多种数据库,大家肯定都会想到 DBeaver.Navicat Premium.本文介绍另一个十分好用且强大的工具:DataGrip. Dat ...
- SQL语法范例大全(SQL Server、Oracle 通解)
[书名]SQL语法范例大全(SQL Server.Oracle 通解) [作者]希赛IT发展研究中心 组编 黄少华,陈翠娥 编著 [ISBN]978-7-121-07396-0 [出版社]电子工业 ...
- SQL Server 与 ORACLE 的区别
sql server 与 oracle的区别: DBMS 数据库管理系统 1.数据类型不同. sql server 的数据类型:int ,smallint ,char,varchar,nc ...
- sql server 与 oracle 的不同,第一感觉。
1,command sql server:go oracle:/ 2,数据类型 sqlserver oracle datetime date numeric ...
- tpc ds 导入到oracle,用TPC-DS测试Sql server,Oracle
TPC-DS是什么 TPC-DS是TPC组织发布的用于测试决策系统的基准测试,是TPC-H的改进版.我们可以用它生成测试数据集和sql语句来测试数据库的OLAP能力. 最近我们用TPC-DS测试了一下 ...
- SQL Server 和 Oracle 以及 MySQL 的区别
SQL Server 和 Oracle 以及 MySQL 的区别 历史说明区别 > Oracle: 中文译作甲骨文,成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A Rel ...
- 网络环境下连接SQL Server和Oracle 19c的方法
网络环境下连接SQL Server和Oracle 19c的方法 1.SQL Server 2019连接方法 1.1 启动SQL Server 2019配置管理器 因为软件都是64位的,从SQL Ser ...
最新文章
- Spring4-@Configuration的使用
- EOS 更新合约内部转账方式变化
- 从 Java 小白到收获 BAT offer ,分享我这 2 年的经验
- @SuppressWarnings(resource)
- python灰色预测_灰色系统预测GM(1,1)模型
- (HDOJ2039)三角形
- php合成图片系统,php图片合成
- java实现贪吃蛇小游戏(源码+注释)
- 解决 jq ui 弹框 select2 input 失效问题
- 在 LaTeX 中插入表格
- linux文件误删恢复解决方案
- python 检查是否为数字(包括正负数、浮点数)
- Java调用不同的打印机实现打印不同小票
- python中的魔方方法
- 如何制作有素描关系的圆
- css 《浮动原理和清除浮动》
- unity怎么让模型动起来?
- 1扩展组件 --FEBE
- 将无法编辑,或者加密的word文档解密,使之可以编辑
- 第一个C跨平台工具whoport