帮助我理解Oracle中CLOB和BLOB之间的区别
这主要是一个“检查我的理解”types的问题。 以下是我在Oracle中工作时对CLOB和BLOB的理解:
- CLOB是像XML,JSON等文本。你不应该假设数据库将它存储为(至less在一个应用程序)的编码,因为它将被转换为数据库configuration使用的任何编码。
- BLOB是用于二进制数据的。 你可以合理地保证,他们将被存储如何发送他们,你会得到与他们发送完全相同的数据他们。
换句话说,我有一些二进制数据(在这个例子中是一个腌制的python对象)。 我需要确定的是,当我发送它时,它将被精确地存储到我发送它的时间,而当我把它发回时它将完全一样。 BLOB是我想要的,对吗?
为此使用CLOB真的可行吗? 还是会字符编码造成足够的问题,这是不值得的?
CLOB
是编码和校对敏感的, BLOB
不是。
当你用CL8WIN1251
编写CLOB
,你写了一个0xC0
(这是西里尔字母А)。
当您使用AL16UTF16
读取数据时,您将返回0x0410
,这是此字母的UTF16
表示forms。
如果您正在读取BLOB
,则会返回相同的0xC0
。
你的理解是正确的。 既然你提到了Python,想想Python 3中string和字节的区别:CLOB和BLOB是非常类似的,CLOB的编码不在你的应用程序的控制之下。