- 浏览: 251822 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
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 2425"INSERT INTO AUDIT_TASK_LO ... -
Oracle 存储过程
2007-11-07 11:53 613存储过程是指数据库中已编译的可调程序,它作为PL/SQ ... -
Oracle 安装注意事项
2007-11-07 22:17 681如果你的机器上存在其它版本的Oracle,请先删除以前版本的安 ... -
Oracle 游标
2007-11-11 15:31 1510Oracle游标,从字面理解就是游动的光标。用数据库语言来描述 ... -
ORACLE 异常汇集
2007-11-15 11:53 622------------------------------- ... -
存储过程 Update 返回改更后的 结果
2007-12-18 19:54 1363今天做邮件群发系统开发,遇到这样一个问题:更改数据库一 ... -
Oracle 返回 结果集
2007-12-19 19:26 702过程返回记录集: CREAT ... -
错误的
2007-12-20 19:47 563CREATE OR REPLACE PACKAGE BODY ... -
随机 返回 一条符合条件的记录
2008-01-21 10:29 713SELECT * FROM anti_shields SAMP ... -
ORACLE NOCOPY
2008-01-21 15:23 838PL/SQL中对out,in out参数使用的?默认形 ... -
ORACLE 存储过程 邮件服务器 反屏蔽
2008-01-22 12:09 703邮件群发反屏蔽的原理是这样的: 1.每封邮件内容不同( ... -
Oracle dblink
2008-02-20 14:06 629Create Database Link LinkName C ... -
让oracle做定时任务
2008-03-11 14:42 1094今天用oracle的定时任务来实现定时检测。于是goole了一 ... -
ORACL 查看连接
2008-03-14 18:16 645select schemaname,osuser,machin ... -
Oracle 常用函数
2008-03-28 14:42 6141.SUBSTR(string,start[,end]) ... -
Oracle 定时任务 JOB
2008-04-02 17:00 947众所周知,一般操作系统会提供定时执行任务的方法,例如:Uni ... -
copy表时丢失索引
2008-04-07 20:24 643今天发现了一个大问题,copy表时,会丢失索引.这导制 ... -
Oracle decode用法
2008-04-23 13:18 17181、Windows NT4.0+ORACLE 8.0.4 ... -
存储过程-a
2008-05-11 23:51 649create or replace PROCEDURE EMA ... -
存储过程-b
2008-05-11 23:52 747create or replace PROCEDURE Pro ...
相关推荐
要将数据从一个表(源表)拷贝到另一个表(目标表),可以使用`INSERT INTO 目标表(字段列表) SELECT 源表.字段1, 源表.字段2, ... FROM 源表`。这会根据指定的字段列表复制源表中的数据。 3. **显示文章、提交人...
- **用途**:用于指定一个值的列表。 - **语法示例**: ```sql SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2,...); ``` - **实例**: ```sql SELECT name FROM employees ...
【SQL语言技术文档】SQL优化篇,如何成为一位写优质SQL语句的绝顶高手
4. 视图(View):创建视图以简化复杂的查询逻辑,提供一个抽象的、易于使用的数据访问接口。 5. 存储过程和函数:编写存储过程和自定义函数,提高代码复用性和执行效率,同时实现业务逻辑的封装。 三、数据库设计...
《SQL高手速成》这本书是针对想要快速提升SQL技能的学习者设计的,旨在帮助读者从初学者阶段迅速成长为能够...而“A5下载- 更全的站长资源平台.url”则可能是一个链接,指向更多的学习资源或社区,供进一步学习和交流。
《SQL Server 2005数据库管理与应用高手修炼指南》是一本专注于SQL Server 2005这一数据库管理系统的学习资料。SQL Server 2005是微软公司推出的数据库平台,广泛应用于数据存储、分析和应用程序开发。这本书的配套...
2. **复制表数据**:要从一个表(a)复制数据到另一个表(b),你可以使用`INSERT INTO`语句: ```sql INSERT INTO b(a, b, c) SELECT d, e, f FROM b; ``` 这将根据源表(b)的列d, e, f填充目标表(b)的列a, ...
本文将深入探讨高手们在实践中总结的十条SQL性能优化经验。 1. **避免模糊匹配**:使用LIKE '%parm1%'可能导致索引失效,降低查询效率。解决方法可以是改进前端程序,提供下拉列表限制输入范围,或在后台先筛选出...
- **OUTER JOIN**:返回至少在一个表中有匹配的所有行,分为LEFT OUTER JOIN和RIGHT OUTER JOIN。 - **CROSS JOIN**:返回第一个表中的每一行与第二个表中的每一行的笛卡尔积。 #### 约束 - **主键**:唯一标识表中...
12. **视图**:虚拟表,由一个或多个SELECT语句的结果集组成,提供了一种简化复杂查询和保护数据的方式。 13. **索引**:用于加速数据检索的数据结构,包括唯一索引、主键索引、聚集索引和非聚集索引等。 14. **...
在数据库设计中,一个数据库由一个或多个表组成,如示例中的"Persons"表,包含记录(行)和字段(列)。 SQL(结构化查询语言)是用于管理和处理数据库的关键工具,它分为数据操作语言(DML)和数据定义语言(DDL)...
SELECT语句的基本用法是从表中选取数据,并将结果存储在一个结果表中,该结果表也被称为结果集。在使用SELECT语句时,可以选择指定的列,或者使用星号(*)来选取表中的所有列。此外,SQL语句对大小写不敏感,即...
作业可能包含编写嵌套查询,例如在一个查询中使用另一个查询的结果作为条件。 8. 分页查询:LIMIT和OFFSET关键字用于实现查询结果的分页,这对于大型数据集的显示非常有用。学生可能需要学习如何设置这些限制来获取...
在提供的文件列表中,"MySQL数据库函数.txt"和"从一个MySQL的例子来学习查询语句.txt"虽然不是SQL Server 2000的内容,但可以作为对比学习,了解不同数据库系统在备份恢复机制上的异同。"数据库查询结果的动态排序....
- **规则**:逗号之后必须添加一个空格。 - **示例**: ```sql SELECT column1, column2 FROM table_name; ``` ##### 7. SQL语句折行 - **规则**:较长的语句可以分多行编写,通常对于`SELECT`, `FROM`, `ORDER ...
1、下了一个NetData控件,服务器与客户端的SQL2000通讯非常好用,方便,可是不能多数据库(客户端自由选择数据库) 2、下了一个WINSOCK与SQL2000的服务器与客户端通讯的源码,稍做修改后,客户端可以自由连接多个...
这个压缩包文件“帮你从SQL从入门到高手”显然旨在为初学者提供一个全面的学习路径,助其逐步掌握SQL的核心概念和技术,最终成为SQL高手。 SQL的基础包括以下几个主要部分: 1. **数据类型**:SQL支持多种数据类型...