这主要只是“检查我的理解”类型的问题。这是我对CLOB和BLOB在Oracle中工作的理解:

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

  • 因此,换句话说,我有一些二进制数据(在这种情况下为腌制的python对象)。我需要确保,当我发送它时,它将完全按照我的发送方式进行存储,并且当我将其取回时,它将完全相同。 BLOB是我想要的,对吗?

    为此使用CLOB真的可行吗?还是字符编码会引起足够的问题,这是不值得的?

    最佳答案

    CLOB对编码和排序规则敏感,而BLOB不对。

    当您使用CLOB写入CL8WIN1251时,您会写入0xC0(西里尔字母А)。

    当您使用AL16UTF16读回数据时,您将返回0x0410,这是此字母的UTF16表示形式。

    如果您正在阅读BLOB,则将获得相同的0xC0

    关于python - 帮助我了解Oracle中的CLOB和BLOB之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1018073/

    10-14 18:10
    查看更多