- 浏览: 251686 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
无它唯勤:
...
Spring Ioc AOP -
dubaopeng:
挺好的,拿去改改!
java 解析csv文件 -
灵程大哥:
先试一下,看行不行
java 判断文本文件编码 -
pxjianke:
谢谢兄弟。我现在在测试插入千万级数据。做测试。这个太有用了。
Oracle 高速批量速插入数据 解决方案
create or replace Procedure Pro_Drivemail_Open
Is
V_SQL VARCHAR2(5000);
--CNT NUMBER;
BEGIN
--SELECT COUNT(*) INTO CNT FROM TAB WHERE TNAME LIKE 'TASK_EMAILS_%' AND LENGTH(SUBSTR(TNAME,INSTR(TNAME,'_',1,2)+1))>=6;
FOR C IN (SELECT * FROM TAB WHERE TNAME LIKE 'TASK_EMAILS_%' AND LENGTH(SUBSTR(TNAME,INSTR(TNAME,'_',1,2)+1))>=6) LOOP
V_SQL:='INSERT /*+ APPEND */ INTO EDM_SYSTEM_SEND_TMP NOLOGGING
(ID,EMAIL,OPEN_TIME,SENDING_TIME,OPEN,CLICK)
SELECT ID,EMAIL,OPEN_TIME,SENDING_TIME,OPEN,CLICK
FROM '||C.TNAME||' WHERE ACTIVE = 1 AND SENDING_TIME IS NOT NULL';
--dbms_output.put_line(v_sql);
EXECUTE IMMEDIATE V_SQL;
COMMIT;
END LOOP;
--------------------------------------------------------------------
INSERT /*+ APPEND */ INTO EDM_SYSTEM_SEND NOLOGGING
SELECT A.*,
ROW_NUMBER() OVER(PARTITION BY EMAIL ORDER BY NVL(OPEN_TIME,SYSDATE-3650) DESC) AS RK
FROM EDM_SYSTEM_SEND_TMP A;
COMMIT;
--------------------------------------------------------------------
INSERT /*+ APPEND */ INTO EDM_SYSTEM_ACTIVE NOLOGGING
(EMAIL,SENDDATE_REC,OPENDATE_REC,SENDTIMES_TOT,OPENTIMES_TOT,SENDTIMES_MON,OPENTIMES_MON)
SELECT A.EMAIL,A.SENDING_TIME,A.OPEN_TIME,B.SENDTIMES_TOT,B.OPENTIMES_TOT,C.SENDTIMES_MON,C.OPENTIMES_MON
FROM EDM_SYSTEM_SEND A, ---ALL Mails Table
(SELECT EMAIL,
COUNT(*) SENDTIMES_TOT,
SUM(CASE WHEN OPEN <> 0 THEN 1 ELSE 0 END) OPENTIMES_TOT
FROM EDM_SYSTEM_SEND
GROUP BY EMAIL ) B, ---Total Times Table
(SELECT EMAIL,
COUNT(*) SENDTIMES_MON,
SUM(CASE WHEN OPEN <> 0 THEN 1 ELSE 0 END) OPENTIMES_MON
FROM EDM_SYSTEM_SEND
WHERE (SENDING_TIME-SYSDATE)<=60
GROUP BY EMAIL ) C ---Month Times Table
WHERE A.RK = 1
AND A.EMAIL = B.EMAIL(+)
AND A.EMAIL = C.EMAIL(+);
Commit;
DELETE EDM_SYSTEM_SEND_TMP NOLOGGING;
COMMIT;
End Pro_Drivemail_Open;
Is
V_SQL VARCHAR2(5000);
--CNT NUMBER;
BEGIN
--SELECT COUNT(*) INTO CNT FROM TAB WHERE TNAME LIKE 'TASK_EMAILS_%' AND LENGTH(SUBSTR(TNAME,INSTR(TNAME,'_',1,2)+1))>=6;
FOR C IN (SELECT * FROM TAB WHERE TNAME LIKE 'TASK_EMAILS_%' AND LENGTH(SUBSTR(TNAME,INSTR(TNAME,'_',1,2)+1))>=6) LOOP
V_SQL:='INSERT /*+ APPEND */ INTO EDM_SYSTEM_SEND_TMP NOLOGGING
(ID,EMAIL,OPEN_TIME,SENDING_TIME,OPEN,CLICK)
SELECT ID,EMAIL,OPEN_TIME,SENDING_TIME,OPEN,CLICK
FROM '||C.TNAME||' WHERE ACTIVE = 1 AND SENDING_TIME IS NOT NULL';
--dbms_output.put_line(v_sql);
EXECUTE IMMEDIATE V_SQL;
COMMIT;
END LOOP;
--------------------------------------------------------------------
INSERT /*+ APPEND */ INTO EDM_SYSTEM_SEND NOLOGGING
SELECT A.*,
ROW_NUMBER() OVER(PARTITION BY EMAIL ORDER BY NVL(OPEN_TIME,SYSDATE-3650) DESC) AS RK
FROM EDM_SYSTEM_SEND_TMP A;
COMMIT;
--------------------------------------------------------------------
INSERT /*+ APPEND */ INTO EDM_SYSTEM_ACTIVE NOLOGGING
(EMAIL,SENDDATE_REC,OPENDATE_REC,SENDTIMES_TOT,OPENTIMES_TOT,SENDTIMES_MON,OPENTIMES_MON)
SELECT A.EMAIL,A.SENDING_TIME,A.OPEN_TIME,B.SENDTIMES_TOT,B.OPENTIMES_TOT,C.SENDTIMES_MON,C.OPENTIMES_MON
FROM EDM_SYSTEM_SEND A, ---ALL Mails Table
(SELECT EMAIL,
COUNT(*) SENDTIMES_TOT,
SUM(CASE WHEN OPEN <> 0 THEN 1 ELSE 0 END) OPENTIMES_TOT
FROM EDM_SYSTEM_SEND
GROUP BY EMAIL ) B, ---Total Times Table
(SELECT EMAIL,
COUNT(*) SENDTIMES_MON,
SUM(CASE WHEN OPEN <> 0 THEN 1 ELSE 0 END) OPENTIMES_MON
FROM EDM_SYSTEM_SEND
WHERE (SENDING_TIME-SYSDATE)<=60
GROUP BY EMAIL ) C ---Month Times Table
WHERE A.RK = 1
AND A.EMAIL = B.EMAIL(+)
AND A.EMAIL = C.EMAIL(+);
Commit;
DELETE EDM_SYSTEM_SEND_TMP NOLOGGING;
COMMIT;
End Pro_Drivemail_Open;
发表评论
-
Oracle insert into select 序列
2010-03-16 14:46 2424"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 561CREATE 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 642select schemaname,osuser,machin ... -
Oracle 常用函数
2008-03-28 14:42 6141.SUBSTR(string,start[,end]) ... -
Oracle 定时任务 JOB
2008-04-02 17:00 946众所周知,一般操作系统会提供定时执行任务的方法,例如: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 ...
相关推荐
"C语言项目实战源码-课程设计源码-毕业设计源码-c语言连连看游戏"就是这样一个绝佳的学习资源,它提供了一个完整的连连看游戏的源代码,可以帮助学生深入理解C语言的游戏开发过程。 连连看游戏,作为一款深受喜爱的...
存储过程类似于C语言中的函数,用于执行管理任务或应用复杂的业务规则,具有多种优势,包括执行速度快、支持模块化设计、提高系统安全性和减少网络流量。 #### 存储过程的优势 1. **执行速度快**:存储过程在创建...
它使用一个计数器`nChar`来跟踪当前处理的组内字符字节序号,以及一个变量`nLeft`来存储上一字节的残余数据。 7-bit解码函数如下: ```c int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int ...
《C语言实现万年历详解》 在编程领域,C语言以其简洁、高效和灵活性而备受推崇,尤其适合初学者入门。...在实际编写过程中,还可以进一步优化,如增加用户交互界面、提高效率、添加错误处理机制等,让程序更加完善。
在C语言的学习过程中,首先,你需要理解C语言的基本结构,包括数据类型(如int、char、float等)、变量的声明与赋值、运算符的使用规则,以及控制流程语句(如if...else、for、while循环)。这些构成了C语言的基础,...
出栈序列-c语言,自己编写的程序,因为是初学者,所以写的不好。
在计算机科学的学习过程中,C语言是基础且重要的编程语言,它以其高效、简洁的特性被广泛应用于系统开发、嵌入式编程以及各种课程设计之中。本项目是一个基于C语言编写的图书管理系统,旨在帮助用户实现图书的增删...
8. **游戏循环**:游戏的核心是一个无限循环,负责处理输入、更新游戏状态、渲染画面并重复这一过程。这个循环称为游戏主循环。 9. **算法和数据结构**:游戏中的碰撞检测、寻路算法(如A*算法)、动画帧管理等都...
"C语言开发----c语言扔香蕉的大猩猩"这个标题可能是以一种幽默的方式来描绘C语言初学者在学习过程中的挑战,就像大猩猩扔香蕉一样,需要准确地掌握技巧和力度。下面将详细介绍C语言的关键知识点。 1. **基本语法**...
凌阳C语言是针对SPCE061A单片机优化的C编译器,它允许开发者直接通过C语言控制硬件,同时提供了寄存器分配和数据类型管理,降低了编程的复杂性。使用凌阳C语言有以下优点: 1. **编译器管理**:寄存器分配和数据...
- `booknode.c`:可能定义了书籍数据结构(如链表节点),用于存储书籍信息。 - `bookinfo.c`:可能包含了关于书籍信息的具体处理,如获取和更新书籍详情。 - `main.c`:这是程序的主入口点,包含了程序的主要...
这份"理2244计科-C语言-OneNote笔记"提供了对C语言深入学习的宝贵资料,涵盖了C语言的基础到高级概念。以下是笔记的主要内容: 1. **第1章:C语言概述** - C语言的历史与特点:介绍C语言由来,其高效、简洁和灵活...
6. **预处理器**:预处理器是C语言编译过程的一部分,用于处理#include指令、宏定义和条件编译。读者将了解如何使用预处理器进行代码的条件化和模块化。 7. **输入/输出**:C语言的标准输入输出库(stdio.h)提供了...
"C语言学习精品"强调这些示例代码是C语言学习过程中的精华部分,能够帮助学习者提高编程技巧和解决问题的能力。"C语言进阶必备"则意味着这些例子将涉及更复杂的主题,适合有一定基础的学习者用来巩固和扩展他们的...
GBK是双字节编码,每个字符占用2个字节,相比于UTF-8,GBK在存储空间上较大,但对中文字符的支持较为全面。 在C语言中,实现UTF-8到GBK的转换通常需要借助查表法。"Utf8ToGbk.c"和"Utf8ToGbk.h"这两个文件很可能是...
最后,理解编译过程和链接器的作用也对深入学习C语言大有裨益。编译器将源代码转换为机器语言,而链接器负责合并各个编译后的对象文件,解决外部引用,生成最终的可执行文件。 总之,《程序员参考--C语言参考手册》...
不过,可以推测这个项目可能包含的一些关键概念和技术,如文件操作(用于持久化存储学生数据)、结构体(用于封装学生信息)、指针(在C语言中用于高效地处理数据)、循环和条件语句(处理逻辑和业务规则)、函数...
1. 变量与数据类型:在C语言中,变量是用来存储数据的容器。了解并熟练使用各种基本数据类型如int、char、float、double等至关重要。例如,int用于整数,char用于单个字符,float和double用于浮点数。理解它们的存储...
C语言中的标准输入输出函数scanf和printf将在此过程中扮演重要角色。 5. **模块化编程**:文件名如input.c、order.c、alter.c、query.c、status.c、main.c、direct.c、linknode.c表明代码被划分为不同的功能模块。...