临时表

ETL 抽取方案

走远了吗. 提交于 2019-12-06 06:51:13
ETL 抽取方案 ETL 过程中的主要环节就是数据抽取、数据转换和加工、数据装载。为了实现这些功 能,ETL 工具会进行一些功能上的扩充,例如工作流、调度引擎、规则引擎、脚本支持、 统计信息等。 数据抽取 数据抽取是从数据源中抽取数据的过程。实际应用中,数据源较多采用的是关系数据库。 从数据库中抽取数据一般有以下几种方式: 2.1.1 全量抽取 全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数 据库中抽取出来,并转换成自己的ETL 工具可以识别的格式。全量抽取比较简单。 2.1.2 增量抽取 增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL 使 用过程中,增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获 方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到; 性能,不能对业务系统造成太大的压力,影响现有业务。目前增量数据抽取中常用的捕获变 化数据的方法有: 2.1.2.1 触发器方式(又称快照式): 在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源 表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表 中抽取数据,临时表中抽取过的数据被标记或删除。 优点:数据抽取的性能高,ETL 加载规则简单,速度快,不需要修改业务系统表结构

sql对表的操作

岁酱吖の 提交于 2019-12-06 04:30:00
--insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在) --select * into pppCopy1 from ppp //将ppp中的数据拷贝到 pppcopy1中,拷贝表的数据以及表的结构(前提:表pppcopy1不存在) --select * into pppCopy2 from ppp where 1=0// 将ppp的表结构拷贝到pppcopy2,不拷贝数据(前提:表pppcopy1不存在) --create table #temp(num int primary key,pname varchar(20))//创建局部临时表 --create table ##temp(num int primary key,pname varchar(20))//创建全局临时表,当sql服务断开时删除 局部临时表与全局临时表区别与示例 1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。 2、全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除。 3、不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表

复制一个表到另一个表、视图、临时表

守給你的承諾、 提交于 2019-12-05 22:16:29
创建一个表new_table和old_table表结构一样(没有old_table的记录) create table new_table as select * from old_table where 1=0; 创建一个表new_table和old_table表结构一样(有old_table的记录) create table new_table as select * from old_table; 复制一个表到另一个表 insert into new_table select * from old_table; 创建视图,删除视图 create or replace view **_view as select * from **table; drop view **_view; 创建临时表 create global temporary table tablename on commit preserve rows as select * from others_table Oracle 临时表的实际用法的经验心得 临时表只能在当前连接内有效; 临时表不建立索引,所以数据量比较大或进行多次查询时,不推荐使用; 数据处理比较复杂的时候表快,反之视图快点; 在仅仅查询数据的时候建议用游标; 我们目前所使用的 Oracle 是作为 数据库 支撑平台的实际应用

oracle学习笔记:重建临时表空间

牧云@^-^@ 提交于 2019-12-05 13:58:41
重建临时表空间 1、创建中转临时表空间 create temporary tablespace TEMP1 tempfile '/oradata/HXDB/datafile/temp02.dbf' size 256M reuse autoextend on next 16M maxsize 1024M; 2、修改缺省临时表空间 alter database default temporary tablespace temp1; 3、删除原来临时表空间 drop tablespace temp including contents and datafiles; 4、重建临时表空间 create temporary tablespace TEMP tempfile '/oradata/HXDB/datafile/temp01.dbf' size 256M reuse autoextend on next 16M maxsize 1024M; 5、修改缺省临时表空间 alter database default temporary tablespace temp; 6、删除中转用临时表空间 drop tablespace temp1 including contents and datafiles; 来源: https://www.cnblogs.com/myheart-new/p

十一月*项目记录--统计项目问题分析2

一世执手 提交于 2019-12-05 09:55:36
前两天把阶段性的成果部署到了客户的生产环境,期间遇到了很多问题,也学习到了很多以前不知道的知识,这里记录一下。 1.之前一篇随笔,说了统计数据使用了两种确定表头的方式的结合,一是根据统计维度的全集字典值来确定,二是如果统计维度的值过多(上百个),那么这类统计维度则根据统计结果来确定表头。但是,两者结合的方式在前端分行查询的展示下十分不友好,因为是分页统计数据,若使用两种方式结合来确定表头,则每一页的表头都是不确定的,是变化的,这样用户肯定会感到十分费解。所以最终还是把表头确定的方式改为了统一用从字典中获取。如果出现很长的统计维度,那么考虑在前端使用一些折叠的特效来提升用户体验。 2.SpringBoot项目打包步骤:1).先将application.yml的配置设置为prod 2). clean -> rebuild -> package 3).将打包好的jar包, application-prod.yml文件以及conf配置文件放到服务器即可。这里不得不说springboot的打包还是很方便的,而且配置文件的分离使得更改配置也非常方便。 3.在服务器启动sb项目的命令: nohup java -jar yourapp.jar --spring.config.location=application-pord.yml 4.关于数据采集的顺序问题

SQL查询优化思维即SQL子查询

家住魔仙堡 提交于 2019-12-05 07:32:09
一、 什么叫子查询    SQL里面嵌套子查询这是非常普遍的写法。下面是有关子查询的一些说明:   子查询又称内部查询,而包含子查询的语句称之外部查询(又称主查询)。 所有的子查询可以分为两类,即相关子查询和非相关子查询。 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。 相关子查询的执行依赖于外部查询。多数情况下是子查询的WHERE子句中引用了外部查询的表。 执行过程: (1)从外层查询中取出一个元组,将元组相关列的值传给内层查询。 (2)执行内层查询,得到子查询操作的值。 (3)外查询根据子查询返回的结果或结果集得到满足条件的行。 (4)然后外层查询取出下一个元组重复做步骤1-3,直到外层的元组全部处理完毕。 查询速度优化用not EXISTS 代替 not in 1,not in 速度奇慢,要用 not EXISTS ,速度奇快! 大表效果尤其明显 sql中exists,not exists的用法 exists()后面的子查询被称做相关子查询,他是不返回列表的值的,只是返回一个ture或false的结果。在查询的时候只要有一个记录符合条件,那么它就返回true,这样查询次数少,信息返回量也少。 exists : 强调的是是否返回结果集,不要求知道返回什么, 比如

数据实时推送平台

不想你离开。 提交于 2019-12-05 06:58:23
推送工具:webservice 假设接口数:30个 需要做到数据实时推送设置时间为每1分钟轮训一次是否有更新数据,如果有,每个接口开启一个线程,线程保持连接的时间是1.5钟, (白天) 对于频繁更新的数据,长连接 次之的线程,30分钟的存活时间 少的,只有在访问的时候开启,持续的时间是2次轮训 (夜晚) 次之的线程,30分钟的存活时间 次之的线程,30分钟的存活时间 少的,只有在访问的时候开启,持续的时间是2次轮训 技术实现: 每一类的不同连接时长的线程都使用一个group,每个连接都有自己的线程名称,工具所属的group限制她的存活时间,如果线程在工作,存活时间重新计数 数据更新到临时表,是在数据的更新修改删除时,使用aop的方法,同时将数据插入到临时表 为什么要使用临时表,隔离原本的业务数据,防止对业务数据的误操作 如何做到数据的一致性 : 在临时表中,还增加了每一个 来源: https://www.cnblogs.com/zj-xu/p/11912188.html

MySQL使用规范手册

允我心安 提交于 2019-12-05 04:20:22
背景 一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢;而在Java应用开发中数据库更是尤为重要,绝大多数情况下数据库的性能决定了程序的性能,如若前期埋下的坑越多到后期数据库就会成为整个系统的瓶颈;因此,更规范化的使用MySQL在开发中是不可或缺的。 一、MySQL数据库命名规范 1、数据库所有表前缀均使用项目名称首字母缩写; 2、数据库所有对象名称均使用小写字母,并且单词之间通过下划线分开; 3、数据库所有对象名称禁止使用MySQL保留字及关键字,涉及到关键字的SQL查询需要将关键字用单引号括起来; 4、数据库所有对象名称不超过32个字符,并且命名要遵循见名知意原则; 5、数据库临时表必须以 pro_tmp_ 为前缀并且以日期 20190917 为后缀,备份表必须以 pro_bac 为前缀并以时间戳为后缀;(pro为项目名称首字母缩写) 6、数据库所有存储相同数据的列名和列类型必须保持一致。 二、MySQL数据库基本设计规范 1、若无特殊说明,建表时一律采用Innodb存储引擎。 选择合适的引擎可以提高数据库性能,如InnoDB和MyISAM,InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定; 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;MyISAM类型的表强调的是性能

清除临时表和重建索引

。_饼干妹妹 提交于 2019-12-05 02:21:22
--清除临时表 use AISXXXXX go declare @sql varchar(max) set @sql=''; with t as (select name from sys.tables where create_date<getdate() and (name like 'tm[^_]%' or name like 'GL[^_]%') ) delete from t1 from T_BAS_TEMPORARYTABLENAME t1 join t on t1.FTABLENAME=t.name; with t1 as (select name from sys.tables where create_date<getdate() and (name like 'tm[^_]%' or name like 'GL[^_]%')) select @sql=@sql+'drop table '+name+char(13) from t1; exec(@sql) --重建索引 use AISXXXXX GO declare @ftablename varchar(255),@findexname varchar(255) declare auth_cur cursor for SELECT distinct object_name(a.object_id) AS TB

Oracle Temporary Table

本小妞迷上赌 提交于 2019-12-05 01:20:05
-- 此处查询为空 验证 会话断开之后数据已经被截断,但表定义依然存在 select * from T; DROP TABLE T; -- 重新创建 会话临时表 create GLOBAL TEMPORARY table T ( C1 DATE, C2 TIMESTAMP(9) ) -- 提交时保留数据 即 在会话退出后执行 Truncate table ON COMMIT PRESERVE ROWS; -- 定义了建立事务级临时表 即 在 COMMITE 或者 RollBack 时 执行 Truncate table -- ON COMMIT DELETE ROWS insert into t(c1,c2) values(date'2010-2-12',timestamp'2010-2-12 13:24:52.234123211'); insert into t(c1,c2) values(to_date('2010-2-12 10:20:30','YYYY-MM-DD HH24:MI:SS'), to_timestamp('2010-2-12 13:24:52.123456','YYYY-MM-DD HH24:MI:SS.FF6')); select c1,dump(c1) c1_d,c2,dump(c2) c2_d from t; COMMIT; -- 验证