繁体   English   中英

将 html 字符串存储到 oracle blob

[英]Store html string to oracle blob

我必须使用 php.So 将包含 html 数据的字符串存储到 oracle blob 字段中

utl_raw.cast_to_raw('myString')

但是当 myString 大小超过 4000 字节时我无法存储。 如何解决这个问题?

我必须使用 php 将包含 html 数据的字符串存储到 oracle blob 字段中

考虑使用CLOB而不是BLOB HTML可以被认为是一个字符串文字 字符串文字本质上是VARCHAR2 所以你不能有一个超过4000 characters的字符串文字。 您需要它们每个最多4000 bytes的块附加到单个CLOB 中以存储超过 4000 个字节。

文档

包含单字节或多字节字符的字符大对象。 支持固定宽度和可变宽度字符集,两者都使用数据库字符集。 最大大小为 (4 GB - 1) * (数据库块大小)

例如,

SQL> CREATE TABLE t_clob
  2    (col CLOB
  3    );

Table created.

SQL> INSERT
  2  INTO t_clob VALUES
  3    (
  4    TO_CLOB
  5    (RPAD('<table ><tbody><tr><td>Some text</td></tr></tbody></table>', 4000, '*'))
  6    ||RPAD('<table ><tbody><tr><td>Some text</td></tr></tbody></table>', 4000, '*')
  7    ||RPAD('<table ><tbody><tr><td>Some text</td></tr></tbody></table>', 4000, '*')
  8    );

1 row created.

SQL> SELECT LENGTH(col) FROM t_clob;

LENGTH(COL)
-----------
      12000

从 Oracle 12c 开始, VARCHAR2的最大大小现在扩展32767 字节 默认情况下,参数MAX_STRING_SIZESTANDARD ,最多可容纳 4000 个字节。

SQL> show parameter MAX_STRING_SIZE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_string_size                      string      STANDARD

您可以将参数值更改为EXTENDED,并将 VARCHAR2 的最大值增加到 32767 字节。

主要有两个重要步骤:

ALTER SYSTEM SET max_string_size=extended;

@?/rdbms/admin/utl32k

如果您使用 TEXTS 代替CLOB ,则 Blob 常用于二进制数据(图像、文档)。

BLOB 是二进制 LOB。 CLOB 是字符 LOB。

使用 CLOB,您可以存储超过 4000 个字节

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM