- 浏览: 242210 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
Spring Ioc AOP -
dubaopeng:
挺好的,拿去改改!
java 解析csv文件 -
灵程大哥:
先试一下,看行不行
java 判断文本文件编码 -
pxjianke:
谢谢兄弟。我现在在测试插入千万级数据。做测试。这个太有用了。
Oracle 高速批量速插入数据 解决方案
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->create table temp_127
(
id number(10),
dtime date
);
create or replace PROCEDURE UT_REDIRECTOR_COUNT(id in number)
IS
s_table_name VARCHAR2(32);
s_sql VARCHAR2(2000);
t_count NUMBER;
c_count NUMBER;
BEGIN
--根据组ID生成组资源表的表名
s_table_name := 'EMAILS_' ||id;
--查询此表是否存在的SQL
--s_sql := 'SELECT COUNT(*) FROM user_tables WHERE TABLE_NAME = ''' || s_table_name || '''';
--EXECUTE IMMEDIATE s_sql INTO t_count;
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = :t1'
into t_count USING s_table_name;
--如果表是否存在
IF t_count = 1 THEN
--查询此表是否有此列
--s_sql := 'SELECT COUNT(*) from USER_TAB_COLUMNS WHERE table_name=''' || s_table_name || ''' AND column_name = ''FIRST_NAME''';
--dbms_output.put_line(s_sql);
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME=:t2 AND COLUMN_NAME = ''FIRST_NAME'''
into c_count USING s_table_name;
--EXECUTE IMMEDIATE s_sql INTO c_count;
--dbms_output.put_line('存在表:' || s_table_name);
IF c_count = 0 THEN
s_sql := 'ALTER TABLE ' || s_table_name || ' ADD (REDIRECTOR_COUNT INT,FIRST_NAME VARCHAR2(256),LAST_NAME VARCHAR2(256),CONTENT_0 VARCHAR2(256),CONTENT_1 VARCHAR2(256),CONTENT_2 VARCHAR2(256))';
EXECUTE IMMEDIATE s_sql;
--dbms_output.put_line('没有字段:' || 'unsubscribe' || s_sql);
s_sql := 'ALTER TABLE ' || s_table_name || ' MODIFY REDIRECTOR_COUNT DEFAULT 0';
EXECUTE IMMEDIATE s_sql;
COMMIT;
END IF;
END IF;
exception
when others then
insert into temp_127(id,dtime)
values(id,sysdate);
commit;
END;
declare
cursor cur is
SELECT *
FROM groups ORDER BY update_time desc;
rec cur%rowtype;
progress_num varchar2(56);
begin
open cur;
loop
fetch cur into rec;
exit when cur%notfound;
UT_REDIRECTOR_COUNT(rec.id);
progress_num:= 'email_'||rec.id;
dbms_application_info.set_client_info(progress_num);
end loop;
close cur;
end;
select client_info from v$session where client_info is not null;
(
id number(10),
dtime date
);
create or replace PROCEDURE UT_REDIRECTOR_COUNT(id in number)
IS
s_table_name VARCHAR2(32);
s_sql VARCHAR2(2000);
t_count NUMBER;
c_count NUMBER;
BEGIN
--根据组ID生成组资源表的表名
s_table_name := 'EMAILS_' ||id;
--查询此表是否存在的SQL
--s_sql := 'SELECT COUNT(*) FROM user_tables WHERE TABLE_NAME = ''' || s_table_name || '''';
--EXECUTE IMMEDIATE s_sql INTO t_count;
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = :t1'
into t_count USING s_table_name;
--如果表是否存在
IF t_count = 1 THEN
--查询此表是否有此列
--s_sql := 'SELECT COUNT(*) from USER_TAB_COLUMNS WHERE table_name=''' || s_table_name || ''' AND column_name = ''FIRST_NAME''';
--dbms_output.put_line(s_sql);
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME=:t2 AND COLUMN_NAME = ''FIRST_NAME'''
into c_count USING s_table_name;
--EXECUTE IMMEDIATE s_sql INTO c_count;
--dbms_output.put_line('存在表:' || s_table_name);
IF c_count = 0 THEN
s_sql := 'ALTER TABLE ' || s_table_name || ' ADD (REDIRECTOR_COUNT INT,FIRST_NAME VARCHAR2(256),LAST_NAME VARCHAR2(256),CONTENT_0 VARCHAR2(256),CONTENT_1 VARCHAR2(256),CONTENT_2 VARCHAR2(256))';
EXECUTE IMMEDIATE s_sql;
--dbms_output.put_line('没有字段:' || 'unsubscribe' || s_sql);
s_sql := 'ALTER TABLE ' || s_table_name || ' MODIFY REDIRECTOR_COUNT DEFAULT 0';
EXECUTE IMMEDIATE s_sql;
COMMIT;
END IF;
END IF;
exception
when others then
insert into temp_127(id,dtime)
values(id,sysdate);
commit;
END;
declare
cursor cur is
SELECT *
FROM groups ORDER BY update_time desc;
rec cur%rowtype;
progress_num varchar2(56);
begin
open cur;
loop
fetch cur into rec;
exit when cur%notfound;
UT_REDIRECTOR_COUNT(rec.id);
progress_num:= 'email_'||rec.id;
dbms_application_info.set_client_info(progress_num);
end loop;
close cur;
end;
select client_info from v$session where client_info is not null;
发表评论
-
Oracle insert into select 序列
2010-03-16 14:46 2354"INSERT INTO AUDIT_TASK_LO ... -
Oracle 存储过程
2007-11-07 11:53 591存储过程是指数据库中已编译的可调程序,它作为PL/SQ ... -
Oracle 安装注意事项
2007-11-07 22:17 661如果你的机器上存在其它版本的Oracle,请先删除以前版本的安 ... -
Oracle 游标
2007-11-11 15:31 1471Oracle游标,从字面理解就是游动的光标。用数据库语言来描述 ... -
ORACLE 异常汇集
2007-11-15 11:53 581------------------------------- ... -
存储过程 Update 返回改更后的 结果
2007-12-18 19:54 1323今天做邮件群发系统开发,遇到这样一个问题:更改数据库一 ... -
Oracle 返回 结果集
2007-12-19 19:26 679过程返回记录集: CREAT ... -
错误的
2007-12-20 19:47 534CREATE OR REPLACE PACKAGE BODY ... -
随机 返回 一条符合条件的记录
2008-01-21 10:29 677SELECT * FROM anti_shields SAMP ... -
ORACLE NOCOPY
2008-01-21 15:23 810PL/SQL中对out,in out参数使用的?默认形 ... -
ORACLE 存储过程 邮件服务器 反屏蔽
2008-01-22 12:09 678邮件群发反屏蔽的原理是这样的: 1.每封邮件内容不同( ... -
Oracle dblink
2008-02-20 14:06 602Create Database Link LinkName C ... -
让oracle做定时任务
2008-03-11 14:42 1070今天用oracle的定时任务来实现定时检测。于是goole了一 ... -
ORACL 查看连接
2008-03-14 18:16 603select schemaname,osuser,machin ... -
Oracle 常用函数
2008-03-28 14:42 5901.SUBSTR(string,start[,end]) ... -
Oracle 定时任务 JOB
2008-04-02 17:00 922众所周知,一般操作系统会提供定时执行任务的方法,例如:Uni ... -
copy表时丢失索引
2008-04-07 20:24 613今天发现了一个大问题,copy表时,会丢失索引.这导制 ... -
Oracle decode用法
2008-04-23 13:18 16961、Windows NT4.0+ORACLE 8.0.4 ... -
存储过程-a
2008-05-11 23:51 614create or replace PROCEDURE EMA ... -
存储过程-b
2008-05-11 23:52 692create or replace PROCEDURE Pro ...
相关推荐
高手整理的经典sql语句,sql,sqlserver,sql经典,sql语句
SQL高手篇:精妙SQL语句介绍,希望与大家共同分亨。
SQL高手速成,SQL语法教学,一本很详细描述SQL指令,语法,表处理等的PDF资料
SQL高手篇精妙SQL语句介绍SQL高手篇精妙SQL语句介绍
高手详解SQL性能优化十条经验
SQL高手速成
简单易懂的sql学习资料。
SQL Server 2005数据库管理与应用高手修炼指南配套文件
用SQL写的简单的银行数据库,关于过程、事务、触发器etc,有详细的注释,非常适合高手的回顾,新手的学习。
SQL开发高手经典手册
而在“软件开发高手须掌握的4大SQL精髓语句(综合篇)”文章中,则用以上4大SQL精髓语句结合起来解决一个非常复杂的实际问题,最终在CSDN博客上获得了不同寻常的11000 多次访问量。 其实,还有一条SQL语句堪称软件...
SQL非常实用的函数和存储过程(非系统自带)。SQL高手必备手册。
SQLServer2000高手精华集 SQLServer2000高手精华集
1、下了一个NetData控件,服务器与客户端的SQL2000通讯非常好用,方便,可是不能多数据库(客户端自由选择数据库) 2、下了一个WINSOCK与SQL2000的服务器与客户端通讯的源码,稍做修改后,客户端可以自由连接多个...
SQL语言书写规则 高手总结
《童虎学习笔记》SQL语言高手样本数据apps.sql
《童虎学习笔记》SQL语言高手样本数据websites.sql
数据库增删改差功能的数据库助手类,适合新人学习使用.高手闪过.用C#写的,可以用在C/S架构或B/S架构