帮助我理解Oracle中CLOB和BLOB之间的区别

Jas*_*ker 39 python oracle

这主要只是一个"检查我的理解"类型的问题.以下是我对Oracle中的CLOB和BLOB的理解:

  • CLOB用于XML,JSON等文本.您不应该假设数据库将其存储为什么编码(至少在应用程序中),因为它将转换为数据库配置使用的任何编码.
  • BLOB用于二进制数据.您可以合理地确信它们将被存储在您发送它们的方式中,并且您将使用与它们发送的数据完全相同的数据来获取它们.

换句话说,我说有一些二进制数据(在这种情况下是一个pickled python对象).我需要确定的是,当我发送它时,它将完全按照我发送的方式存储,当我收回它时它将完全相同.BLOB是我想要的,对吗?

为此使用CLOB真的可行吗?或者字符编码会导致足够的问题,这是不值得的吗?

Qua*_*noi 55

CLOB编码和校对是敏感的,BLOB不是.

当你写一个CLOB使用,比方说,CL8WIN1251你写一个0xC0(这是西里尔字母А).

当您使用时读回数据时AL16UTF16,您会回来0x0410,这是UTF16这封信的代表.

如果你正在阅读BLOB,你会得到同样的0xC0回报.


Ale*_*lli 10

你的理解是正确的.既然你提到了Python,想想字符串和字节之间的Python 3区别:CLOB和BLOB非常类似,另外一个问题是CLOB的编码不在你应用程序的控制之下.