这篇文章主要介绍“Oracle与PostgreSQL数据写入的方法是什么”,在日常操作中,相信很多人在Oracle与PostgreSQL数据写入的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle与PostgreSQL数据写入的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在特殊字符(不可见字符,如ASCII 0、控制字符、非法字符等)上,Oracle非常宽松,基本上可以写入任何数据,包括不符合编码规则的数据。而PostgreSQL则不然,必须符合该字符集的编码,比如在UTF8字符集下,输入的字符编码比如符合UTF8编码。

Oracle
字符集为GBK,创建数据表,插入特殊字符(0x00),没有问题

TEST-orcl@DESKTOP-V430TU3>droptablet_0x00purge;Tabledropped.TEST-orcl@DESKTOP-V430TU3>createtablet_0x00(idint,c1varchar2(200),c2blob);Tablecreated.TEST-orcl@DESKTOP-V430TU3>insertintot_0x00values(1,chr(0),null);1rowcreated.TEST-orcl@DESKTOP-V430TU3>insertintot_0x00values(2,'c1'||chr(0),null);1rowcreated.TEST-orcl@DESKTOP-V430TU3>insertintot_0x00values(3,chr(0)||'c1',null);1rowcreated.TEST-orcl@DESKTOP-V430TU3>insertintot_0x00values(4,'c1'||chr(0)||'c1',null);1rowcreated.TEST-orcl@DESKTOP-V430TU3>insertintot_0x00values(5,'c1'||chr(0)||'c1',to_blob(HEXTORAW('550055')));1rowcreated.TEST-orcl@DESKTOP-V430TU3>TEST-orcl@DESKTOP-V430TU3>select*fromt_0x00wherec1like'%'||chr(0)||'%';IDC1C2--------------------------------------------------12c13c14c1c15c1c1550055TEST-orcl@DESKTOP-V430TU3>

PostgreSQL
字符集为UTF8,创建数据表,插入特殊字符(0x00),无法插入

[local:/data/run/pg12]:5120pg12@testdb=#\encodingUTF8[local:/data/run/pg12]:5120pg12@testdb=#droptablet_0x00;insertintot_0x00values(4,'c1'||E'\x00'||'c1',null);insertintot_0x00values(5,'c1'||E'\x00'||'c1','\x550055'::bytea);DROPTABLE[local:/data/run/pg12]:5120pg12@testdb=#createtablet_0x00(idint,c1varchar(200),c2bytea);CREATETABLE[local:/data/run/pg12]:5120pg12@testdb=#[local:/data/run/pg12]:5120pg12@testdb=#insertintot_0x00values(1,E'\x00',null);ERROR:invalidbytesequenceforencoding"UTF8":0x00[local:/data/run/pg12]:5120pg12@testdb=#insertintot_0x00values(1,chr(0),null);ERROR:nullcharacternotpermitted[local:/data/run/pg12]:5120pg12@testdb=#insertintot_0x00values(2,null,bytea'\x00');INSERT01[local:/data/run/pg12]:5120pg12@testdb=#insertintot_0x00values(3,E'\x00'||'c1',null);ERROR:invalidbytesequenceforencoding"UTF8":0x00[local:/data/run/pg12]:5120pg12@testdb=#insertintot_0x00values(4,'c1'||E'\x00'||'c1',null);ERROR:invalidbytesequenceforencoding"UTF8":0x00[local:/data/run/pg12]:5120pg12@testdb=#insertintot_0x00values(5,'c1'||E'\x00'||'c1','\x550055'::bytea);ERROR:invalidbytesequenceforencoding"UTF8":0x00[local:/data/run/pg12]:5120pg12@testdb=#select*fromt_0x00wherec1like'%'||chr(0)||'%';ERROR:nullcharacternotpermitted[local:/data/run/pg12]:5120pg12@testdb=#

在Oracle -> PG的迁移过程中,这些特殊字符是需要考虑的。

到此,关于“Oracle与PostgreSQL数据写入的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!