这主要只是一个“检查我的理解”类型的问题。以下是我对Oracle中的CLOB和BLOB的理解:
换句话说,我说有一些二进制数据(在这种情况下是一个pickle python对象)。我需要确定的是,当我发送它时,它将完全按照我发送的方式存储,当我收回它时它将完全相同。 BLOB就是我想要的,对吗?
为此使用CLOB真的可行吗?或者字符编码会导致足够的问题而不值得吗?
答案 0 :(得分:54)
CLOB
对编码和排序规则敏感,BLOB
不是。
当你使用CLOB
写一个CL8WIN1251
时,你会写一个0xC0
(这是西里尔字母А)。
当您使用AL16UTF16
阅读数据时,您会收到0x0410
,这是此信的UTF16
代表。
如果您正在使用BLOB
阅读,那么您将获得相同的0xC0
。
答案 1 :(得分:10)
您的理解是正确的。由于你提到了Python,想想字符串和字节之间的Python 3区别:CLOB和BLOB非常类似,另外一个问题是CLOB的编码不在你应用程序的控制之下。