使用大字符串更新 Oracle CLOB 列
Update oracle CLOB column with large string
我有一个包含几列的 table systesttab
。其中一列是 CLOB 类型,它应该包含一串 base64 编码图像。
CREATE TABLE systesttab(
...
f_picture CLOB DEFAULT ' ' NOT NULL,
...
)
然而,当我尝试用一个大的 base64 字符串(超过 100k 个字符)更新 table 时,它失败了并且我的 python 应用程序崩溃了(即使在尝试时......除了块)。
UPDATE systesttab SET f_picture = 'data:image/png;base64,iVBORw0KGgoASU ...'
我什至尝试将值转换为 clob:
UPDATE systesttab SET f_picture = TO_CLOB('data:image/png;base64,iVBORw0KGgoASU ...')
但我得到的只是这个错误:
Input string too long, limit 8192
现在,我猜这是想告诉我一些关于块大小的信息,但它对我并没有真正的帮助。
如何用一条语句更新 table?
我是否必须以不同方式声明 table 的创建语句?
如果有办法在单个语句中完成此操作,那么在同一 table.
上更新多个列时它也应该可以工作
环境:python 3.4 & pyodbc
我已经使用 SQL 绑定解决了这个问题。看来字数限制不适用了。
在 python 中,语句现在如下所示:
pic = 'data:image/png;base64,iVBORw0KGgoASU ...'
sql = "UPDATE systesttab SET f_picture = ?"
cursor.execute( sql, [pic] )
这在同时更新多个字段时也能正常工作。
我有一个包含几列的 table systesttab
。其中一列是 CLOB 类型,它应该包含一串 base64 编码图像。
CREATE TABLE systesttab(
...
f_picture CLOB DEFAULT ' ' NOT NULL,
...
)
然而,当我尝试用一个大的 base64 字符串(超过 100k 个字符)更新 table 时,它失败了并且我的 python 应用程序崩溃了(即使在尝试时......除了块)。
UPDATE systesttab SET f_picture = 'data:image/png;base64,iVBORw0KGgoASU ...'
我什至尝试将值转换为 clob:
UPDATE systesttab SET f_picture = TO_CLOB('data:image/png;base64,iVBORw0KGgoASU ...')
但我得到的只是这个错误:
Input string too long, limit 8192
现在,我猜这是想告诉我一些关于块大小的信息,但它对我并没有真正的帮助。
如何用一条语句更新 table?
我是否必须以不同方式声明 table 的创建语句?
如果有办法在单个语句中完成此操作,那么在同一 table.
上更新多个列时它也应该可以工作环境:python 3.4 & pyodbc
我已经使用 SQL 绑定解决了这个问题。看来字数限制不适用了。
在 python 中,语句现在如下所示:
pic = 'data:image/png;base64,iVBORw0KGgoASU ...'
sql = "UPDATE systesttab SET f_picture = ?"
cursor.execute( sql, [pic] )
这在同时更新多个字段时也能正常工作。