oracle、SqlServer、mysql字段类型比较

       最近在进行数据抽取的时候,设计到多个数据库,oracle、SqlServer、mysql。这个时候字段类型映射成了一个比较头疼的问题,所以想整理一下这三个常用数据库之间的字段类型比较。

1、常见类型的映射关系:

Sqlserver mysql oracle
INT INT NUMBER
TINYINT TINYINT NUMBER
SMALLINT INT NUMBER
BIGINT BIGINT       NUMBER      
BIT BIT      NUMBER
DATETIME DATETIME     DATE
DATE DATE DATE
DATETIME DATETIME     DATETIME
DATETIME2(7)     DATETIME     DATE
TIME(7) DATETIME     DATE
IMAGE MEDIUMBLOB BLOB
TEXT MEDIUMTEXT CLOB
DECIMAL(5,2) DECIMAL(5,2) NUMBER(5,2) 
FLOAT FLOAT        NUMBER      
MONEY VARCHAR(20) VARCHAR2(40)
NCHAR(30) NCHAR(30) NCHAR(30)
NVARCHAR(30) NVARCHAR(30) NVARCHAR2(60)
VARCHAR(10 CHAR) VARCHAR(20) VARCHAR2(40)
VARCHAR(20) VARCHAR(20) VARCHAR2(40)
CHAR(10) CHAR(10) VARCHAR2(20)
XML VARCHAR(4000) VARCHAR2(4000)



2、一些小技巧:

      a.目标库的字段长度要稍微的定大一些,比如源库mysql是CHAR(10),目标库最好用varchar(20),因为之前我遇到过字符长度不够的问题。

     b、对于大多数的字段,要是一时不能确定转换什么类型的数据,可以先匹配成字符类型,因为后面转换起来,字符串的处理比较容易些。

     c、转换到SqlServer数据库时,要是字符串类型,不含中文的用varchar,有中文的用nvarchar。


3、一个特殊的字段:向量字段。

在oracle中存在一个向量字段.(要想存向量字段的数据,必须做一些配置)

向量,理解起来就是方向+大小。oracle的向量字段也可以这么理解。在转换到其他数据库时,就需要把一个字段编程两个字段。

下面是把oracle一个向量字段转换到mysql数据库中,在从mysql转换到oracle中的过程。

oracle mysql oracle
ST_GEOMETRY(256) 转换成blob和int ST_GEOMETRY(256)
源适配器:sde.st_asbinary(SHAPE),sde.st_srid(SHAPE)
SHAPE为ST_GEOMETRY类型,用函数转换成blob和int类型
目标适配器:sde.st_geomfromwkb(wkb,srid)
将转换成的blob和int类型数据,再次转换成ST_GEOMETRY类型(wkb,srid为上一步装换成的blob和int类型)




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值