如何通过sql的insert语句插入大量字符串到oracle的clob字段?

当通过insert语句直接插入大量字符串(主要是html的内容),超过4000字符时候,就会报:

ORA-01489: 字符串连接的结果过长

虽然字段是clob,足以存储,但是通过这种直接插入的时候,因为没有强制指定带插入字符串为clob类型,

oracle会把插入的字符串作为 “字符串类型”处理,由于oracle有最大字符串限制(不超过4000个字符),所以会报错。

解决思路:指定待插入字符串类型为clob,可以使用过程或存储过程

例子:

DECLARE
 REALLYBIGTEXTSTRING CLOB := ‘待插入的海量字符串‘;
BEGIN

INSERT INTO test_table VALUES(‘test‘, REALLYBIGTEXTSTRING, ‘0‘);
end ;
/

commit;

这样就可以解决问题。

时间: 2024-10-06 21:34:48

如何通过sql的insert语句插入大量字符串到oracle的clob字段?的相关文章

SQL Bulk Insert 快速插入

SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形式. ① 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可: INSERT INTO table_nameVALUES (value1,value2,value3,...); ② 第二种形式需要指定列名及被插入的值: INSERT INTO table_name (column1,column2,column3,..

SQL的insert语句

INSERT INTO 语句 INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 插入新的行 "Persons" 表: LastName FirstName Address City Carter Thomas Changan Street Beijing S

Sql Server 循环语句插入

有个表tt 描述为: q (PK,int,not null) w (nchar(10),not null) e (int,not null) r (int,not null) t (int,not null) y (int,not null) u (int,not null) i (int,not null) o (int,not null) p (int,not null) 循环插入语句为: declare @a int set @a=1 while @a<10001 begin insert

JDBC Insert语句插入Oracle数据库返回数据主键

表结构: create table test( id varchar2(32) primary key, name varchar2(32) ); import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Test { /** * 使用S

一条insert语句插入数据库

CREATE TABLE test_main ( id INT NOT NULL, value VARCHAR(10), PRIMARY KEY(id) ); oracle插入方式:INSERT INTO test_main(id, value) SELECT 1, 'ONE' FROM dual UNION ALLSELECT 2, 'TWO' FROM dual; mysql.postgresql插入方式: INSERT INTO test_main(id, value) values(1,

sql server 数据库机种 insert 语句用法insert into emproyee(e_name,e_sex)values(&#39;唐家三少&#39;,0); insert into emproyee

刚倒弄sql server 对insert 语句插入多条数据时总结下> 单条数据插入: insert into emproyee(e_name,e_sex)values('唐家三少',0); insert into emproyee(e_name,e_sex)select'骷髅精灵',0 多条数据插入: insert into emproyee(e_name,e_sex)select'天蚕土豆',0 union all select '我吃西红柿',0 union all select '逆苍天

用一句mysql语句插入多条数据

假如有一个数据表A: id name title addtime 如果需要插入n条数据 : $time= time(); $data = array(    array(      'name'=>'name1','title'=>'title1','addtime'=>$time;    ),    array(      'name'=>'name2','title'=>'title2','addtime'=>$time;    ),    array(      

SQL Server 2008&mdash;&mdash;SQL命令INSERT

T-SQL的INSERT命令的语法: INSERT [INTO]     {table_name|view_name}     [{(column_name,column_name,-)}]     {VALUES (expression,expression,-)} 方括号内是可选的. 列名的列表必须用圆括号包围住,逗号分隔. 关键字VALUES是必须的,数据值用圆括号包围,逗号分隔. 最好是尽量避免在名称中包含空格: 如果表或视图的名称与保留字相同或包含空格,则必须用方括号或双引号将名称包围

关于加快INSERT语句执行速度和HINT /*+ append */及/*+ append nologging */的使用

(非归档模式下)创建表T01: SQL> create table t01 as select * from dba_objects where 1=2; Table created. (非归档模式下)查看当前redo大小: SQL> select value 2 from v$mystat,v$statname 3 where v$mystat.statistic#=v$statname.statistic# 4 and v$statname.name='redo size' 5 / VAL