将html字符串存储到oracle blob

时间:2015-11-13 06:27:57

标签: php sql oracle

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

utl_raw.cast_to_raw('myString')

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

2 个答案:

答案 0 :(得分:1)

  

我必须使用php

将包含html数据的字符串存储到oracle blob字段中

考虑使用 CLOB 而不是 BLOB HTML 可以被视为字符串文字。字符串文字本身就是 VARCHAR2 。因此,您的字符串文字不能超过4000 characters。您需要追加它们各自以4000 bytes为单位的 CLOB 以存储超过4000个字节。

来自documentation

  

包含单字节或多字节的字符大对象   字符。固定宽度和可变宽度字符集都是   支持,都使用数据库字符集。 最大尺寸为(4   千兆字节 - 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_SIZE STANDARD ,最多可容纳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

答案 1 :(得分:0)

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

  

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

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