首页 > 数据库 >PostgreSQL和Oracle的数据类型的对比:大数据类型

PostgreSQL和Oracle的数据类型的对比:大数据类型

时间:2023-03-12 11:55:33浏览次数:55  
标签:PostgreSQL text 数据类型 类型 Oracle bytea

PostgreSQL和Oracle的数据类型的对比:大数据类型

 木马童年2018-12-29 23:1021220

  PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用。随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多。数据库之间数据迁移的时候,首先 ...  

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用。随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多。数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换。下面根据自己的理解和测试,写了一些数据类型之间的差异以及迁移时的注意事项的文章,不足之处,尚请多多指教。

大数据类型

Oracle的大数据类型主要包括三类。分别是存储在数据库内部的类型,包括BLOB, CLOB, NCLOB。存储在外部的类型, 就是BFILE。还有Oracle不推荐使用, 仅用于特殊环境的类型。包括为了兼容老版本而使用的Long和为了数据在不同系统间移动而利用的Long raw类型。

PostgreSQL的大数据类型只有两种,就是存储二进制数据的bytea和存储字符类型的text。下面介绍一下它们之间的对应和迁移时的一些注意事项。

注意: PostgreSQL对应的大数据类型还有一个对象标识符类型(oid)。它是一个标识符,指向在pg_largeobject 系统表中的一个bytea类型的对象。由于它是用一个四字节的无符号整数实现,不能够提供大数据库范围内的唯一性保证。因此,postgreSQL不推荐使用oid类型。加上它的内部实现,也是使用bytea类型,所以就不单独介绍了。

1、存储在数据库内部的类型

1.1、BLOB类型

Oracle的Blob类型主要内容是二进制的大对象。最大长度是(4G-1)*database block size。在PostgreSQL中,与之对应的是bytea。最大长度是1G。虽然最大长度小于Blob,但是在实际应用中已经足够了。

Oracle BLOB

PostgreSQL和Oracle的数据类型的对比:大数据类型

PostgreSQL bytea

PostgreSQL和Oracle的数据类型的对比:大数据类型

1.2、CLOB类型

Oracle的Clob类型,主要存储基于数据库字符集的单字节或多字节文本信息,最大长度是(4G-1)*database block size。PostgreSQL中,可以使用text来对应。text的最大长度是1G,比Oracle的小。但是,实际应用中,1G已经足够。

Oracle CLOB

PostgreSQL和Oracle的数据类型的对比:大数据类型

PostgreSQL text

PostgreSQL和Oracle的数据类型的对比:大数据类型

1.3、NCLOB类型

Oracle的NClob类型,主要存储固定长度的UNICODE字符串,最大长度是(4G-1)*database block size。PostgreSQL中,可以使用text来对应。text的最大长度是1G,比Oracle的小。但是,实际应用中,1G已经足够。

Oracle CLOB

PostgreSQL和Oracle的数据类型的对比:大数据类型

PostgreSQL text

PostgreSQL和Oracle的数据类型的对比:大数据类型

2、存储在数据库外部的类型

2.1、BFILE类型

存储在数据库外部的类型,就是指BFILE类型。BFILE是一种特殊的数据类型。数据并不保存在数据库内。数据库内仅仅是一个文件的指针。指明了文件的路径和文件名。实际的文件存储在硬盘上。只能对文件进行读取,而且不能Commit和Rollback。Oracle需要对文件所在的路径有读权限。文件的大小理论上可以达到2^64-1字节。

PostgreSQL中,没有储存在外部的数据类型。可以使用bytea来对应BFILE类型。数据类型的最大长度,没有BFILE的大。但是实际应用中,bytea的大小已经足够了。

Oracle BFILE

PostgreSQL和Oracle的数据类型的对比:大数据类型

PostgreSQL bytea

PostgreSQL和Oracle的数据类型的对比:大数据类型

3、Oracle不推荐使用的大数据类型

3.1、LONG RAW类型

Oracle的long raw主要用于不同的系统之间转移数据的时候所用,是Oracle不推荐使用的数据类型。Oracle推荐使用Blob来代替Long raw,并且Long raw的数据可以直接转换成Blob类型。Long raw的最大范围是2G。

PostgreSQL中,与之对应的就是bytea类型。

3.2、LONG类型

Oracle的Long类型是Oracle不推荐使用的一个数据类型。使用它有很多的限制。比如一个表中只能有1个字段,不能用在where条件中使用等等。Oracle保留它的目的只是为了兼容以前的版本。Long类型的最大范围是2^31 -1(即2G-1)个字节。

在PostgreSQL中,Long类型的对应字段是text。虽然最大字符数少于Long类型,但是,text的最大长度1G在实际应用中已经足够了。

Oracle LONG

PostgreSQL和Oracle的数据类型的对比:大数据类型

PostgreSQL text

PostgreSQL和Oracle的数据类型的对比:大数据类型

Oracle的大数据类型虽然多一些,但是PostgreSQL中基本上就是text和bytea两个,分别对应文本信息和二进制信息。迁移的时候,文本信息转成text,二进制信息转成bytea。特殊类型BFILE形式的,可以额外写一些代码把数据从文件中读出转换成bytea。这样就可以完成大数据类型的迁移。

标签:PostgreSQL,text,数据类型,类型,Oracle,bytea
From: https://www.cnblogs.com/yaoyangding/p/17207908.html

相关文章

  • Dart数据类型
    基本类型Number型int整型inti=10;varj=20;double浮点型doublei=3.14;varj=3.14;string字符串Stringstr="goodmorning";varstrin......
  • LINUX下安装Oracle监听报错Error: null
    今天在安装Oracle配置监听的时候执行netca报错:Error:nullCheckthetracefilefordetails:/u01/app/oracle/cfgtoollogs/netca/trace_OraDB12Home1-2303119PM5318.log......
  • 为什么说PostgreSQL是最先进的关系型数据库
    公众号:MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握!@目录一、PostgreSQL是什么?二、PostgreSQL的功能和特点三、PostgreSQL对比MySQL有哪些优势?四、PostgreS......
  • 04-IDEA 开发+数据类型
    IDEA开发psvm缩写直接生成main方法sout直接生成输出打印 注释标注解释,写代码量多,这时需要注释了。单行,多行,文档注释 annotations注解comments注释 标识......
  • jdbc 链接 oracle 查询
    Oracle默认端口号为:1521Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";报错1:ClassNotFoundException:oracle.jdbc.driver.OracleDriver:缺少pom依赖:<depen......
  • redis数据类型-set类型
    不存在重复元素的集合常用场景去重用户画像标签常用命令SADDkeymember...为set增加元素SCARDkey返回set中元素的数量SDIFFkey1key2返回两个set的差......
  • Oracle Schema
    看来有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。我们先来看一下他们的定义:A schema isa collection ofdatabaseobjects(used......
  • oracle建表语句,添加主键、索引、注释,插入数据,添加序列
    createtableFND_COMPANIES_42624(COMPANY_IDnumber(3)primarykey,--公司IDnumber序列COMPANY_CODEVARCHAR2(30)notnull,--公司......
  • oracle 口令文件
    口令文件介绍以特权用户身份(SYS/SYSDBA/SYSOPER)登录ORALCE数据库有两种验证方法:即使用与操作系统集成的身份验证使用ORALCE数据库的密码文件进行身份验证。ORALCE......
  • 03-变量和数据类型
    变量和数据类型所有定义的变量都存在内存中,定义变量需要内存空间,不同类型的变量需要的内存空间是不同的数据类型作用:告诉编译器,我这个数据在内存中需要多大的空间,编......