资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,LOGO,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,ETL,基础及,常用技术,主要内容,ETL,基本概念,ETL,常用逻辑架构,ETL,实施过程,ETL,常用技术(,shell,oracle,datastage,),ETL,基本概念,ET L(Extract-Transform-Load),即数据的抽取、转换与加载。,ETL,是从各,种原始的业务系统,(,异构多源,),中提取数据,按照预先设计好的规则将抽取到的,数据进行转换,最后将转换完的数据按计划增量或全部导人到目标数据库,成,为联机分析处理、数据挖掘的基础。,ETL,为,BI/DW,的核心和灵魂,.,ETL,就是一个批量数据加工的过程,.,ETL,常用逻辑架构,数据抽取,数据清洗与转换,数据加载,ETL,实施过程,数据抽取,确定所有数据源,来源于哪些源系统,核心系统,信贷,信用卡等,定义数据接口,对每个源文件及接口的每个字段进行详细说明,数据抽取方法,主动抽取还是源系统提供文件,增量还是全量,每日还是每月,ETL,实施过程,1.,代码标准化,2.,数据粒度的转换,3.,根据业务规则计算,确定数据清洗和转换规则后细化,mapping,编码实现,数据清洗与转换,数据清洗,1.,不完整的数据,2.,错误的数据,3.,重复的数据,数据转换,ETL,实施过程,数据加载,将数据缓冲区的数据直接加载到数据库对应的表中,如果是全量采用,load,方式,如果是增量则根据业务规则,merge,进数据库,ETL,实施过程,ETL,常用技术,SHELL(unix,基本操作,),SQL,PL/SQL,PROC,DATASTAGE,shell,基础,Linux,中有好多种不同的,shell,,如,bsh,,,csh,,同其他语言一样,可以通过我们使用任意一种文字编辑器,比如,vi,等来编写我们的,shell,程序。,程序必须以下面的行开始(必须放在文件的第一行):,#!/bin/sh,符号,#!,用来告诉系统它后面的参数是用来执行该文件的程序。在这个程序中我们使用,/bin/sh,来执行程序。,当编辑好脚本时,如果要执行该脚本,还必须使其可执行。,要使脚本可执行:,chmod+x filename,然后,可以通过输入:,./filename,来执行脚本。,shell,基础,Vi,(一)、进入,vi,在系统提示字符,(,如,$,、,#),下敲入,vi,档案名称,,vi,可以自动帮你载入所要编辑的文件或是开启一个新,文件(如果该文件不存在或缺少文件名)。进入,vi,后萤幕左方会出现波浪符号,凡是列首有该符号就代 表此列目前是空的。,(,二)、两种模式,如上所述,,vi,存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入,a,,,vi,即认为是在当前位置插入字符。而在输入模式下,,vi,则把输入的按键当作插入的字符来处理。指令,模式切换到输入模式只需键入相应的输入命令即可(如,a,A,),而要从输入模式切换到指令模式,则需在 输入模式下键入,ESC,键,如果不晓得现在是处於什麽模式,可以多按几次,ESC,,系统如发出哔哔声就表 示已处于指令模式下了。,shell,基础,Vi,由指令模式进入输入模式的指令:,新增,(append),a,:从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。,A,:从光标所在列最後面的地方开始新增资料。,插入,(insert),i,:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。,I,:从光标所在列的第一个非空白字元前面开始插入资料。,开始,(open),o,:在光标所在列下新增一列并进入输入模式。,O:,在光标所在列上方新增一列并进入输入模式。,shell,基础,Vi,(三)、基本编辑,配合一般键盘上的功能键,像是方向键、,Insert,、,Delete,等等,现在你应该已经可以利用,vi,来编辑文件 了。当然,vi,还提供其他许许多多功能让文字的处理更为方便。,何谓编辑?一般认为是文字的新增、修改以及删除,甚至包括文字区块的搬移、复制等等。先这里介绍,vi,的如何做删除与修改。,删除与修改文件的命令:,x,:删除光标所在字符。,dd,:删除光标所在的列。,r,:修改光标所在字元,,r,後接著要修正的字符。,R,:进入取替换状态,新增文字会覆盖原先文字,直到按,ESC,回到指令模式下为止。,s,:删除光标所在字元,并进入输入模式。,S,:删除光标所在的列,并进入输入模式。,在指令模式下移动光标的基本指令是,h,j,k,l,。,shell,基础,Vi,(四)、退出,vi,在指令模式下键入,:q,:q!,:wq,或,:x(,注意,:,号),就会退出,vi,。其中,:wq,和,:x,是存盘退出,而,:q,是直接退出,,如果文件已有新的变化,,vi,会提示你保存文件而,:q,命令也会失效,这时你可以用,:w,命令保存文件后再用,:q,退出,或用,:wq,或,:x,命令退出,如果你不想保存改变后的文件,你就需要用,:q!,命令,这个命令将不保存文件,而直接退出,vi,。,shell,基础,注释,#,变量,在,shell,编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,可以这样写:,变量名,=,值,取出变量值可以加一个美元符号(,$,)在变量前面,shell,脚本,中,的,三,类,命令,1,),Unix,命令,2,),管道,重定向和,backtick,3,)流程控制,shell,基础,unix,命令,在,shell,脚本中可以使用任意的,unix,命令,这些命令通常是用来进行文件和文字操作的。,常用命令语法及功能,:,echo some text:,将文字内容打印在屏幕上,ls:,文件列表,wc l filewc-w filewc-c file:,计算文件行数计算文件中的单词数计算文件中的字符数,cp sourcefile destfile:,文件拷贝,mv oldname newname:,重命名文件或移动文件,rm file:,删除文件,grep pattern file:,在文件内搜索字符串比如:,grep searchstring file.txt,cut-b colnum file:,指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第,5,个到第,9,个字符,cut-b5-9 file.txt,千万不要和,cat,命令混淆,这是两个完全不同的命令,shell,基础,unix,命令,ftp:,远程传输文件,ftp ip,然后输入用户名密码,,put,,,get,cat file.txt:,输出文件内容到标准输出设备(屏幕)上,file somefile:,得到文件类型,read var:,提示用户输入,并将输入赋值给变量,sort file.txt:,对,file.txt,文件中的行进行排序,uniq:,删除文本文件中出现的行列比如:,sort file.txt|uniq,expr:,进行数学运算,Example:add 2 and 3expr 2+3,find:,搜索文件比如:根据文件名搜索,find.-name filename-print,tee:,将数据输出到标准输出设备,(,屏幕,),和文件比如:,somecommand|tee outfile,basename file:,返回不包含路径的文件名比如:,basename/bin/tux,将返回,tux,shell,基础,unix,命令,dirname file:,返回文件所在路径比如:,dirname/bin/tux,将返回,/bin,head file:,打印文本文件开头几行,tail file:,打印文本文件末尾几行,sed:Sed,是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。不要和,shell,中的通配符相混淆。比如:将,linuxfocus,替换为,LinuxFocus,:,cat text.file|sed s/linuxfocus/LinuxFocus/newtext.file,awk:awk,用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用,-F,指定其他分割符。,cat file.txt|awk-F,print$1,$3,这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下:,Adam Bor,34,IndiaKerry Miller,22,USA,命令输出结果为:,Adam Bor,IndiaKerry Miller,USA,tar:,将文件或文件夹打包解包,,tar cvf a.tar abc tar xvf a.tar,shell,基础,管道,、,重定向和,backtick,命令,管道,(|),将一个命令的输出作为另外一个命令的输入。,grep hello file.txt|wc-l,在,file.txt,中搜索包含有”,hello”,的行并计算其行数。,在这里,grep,命令的输出作为,wc,命令的输入,重定向,将命令的结果输出到文件,而不是标准输出(屏幕,),写入文件并覆盖旧文件,加到文件的尾部,保留旧文件内容。,反短斜线(,),使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。命令:,V_date=date+%F,shell,基础,流程控制命令,(if),if Then .,elif Then.,Else,.,fi,大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等,通常用,来表示条件测试。注意这里的空格很重要。要确保方括号的空格。,-f somefile,:判断是否是一个文件,-x/bin/ls,:判断,/bin/ls,是否存在并有可执行权限,-n$var,:判断,$var,变量是否有值,$a=$b,:判断,$a,和,$b,是否相等,shell,基础,流程控制命令,(if),字符串比较,:,string1=string2,如果相等则为真,string1!=string2,如果不等则为真,-n string,如果不空则为真,-z string,如果为空则为真,算术比较,:,expression1-eq expression2,如果相等则为真,expression1-ne expression2,如果不等则为真,expression1-gt expression2,如果大于则为真,expression1-ge expression2,大于等于则为真,expression1-lt expression2,如果小于则为真,expression1-le expression2,小于等于则为真,shell,基础,流程控制命令,(if),文件,:,-d file,如果为目录则为真,-e file,如果存在则为真,(,在这里要注意的是,由于历史原因,-e,选项并不可移植,所以常用的是,-f,选项,-f file,如果为常规文件则为真,-g file,如果设置了组,ID,则为真,-r file,如果文件可读则为真,-s file,如果文件大小不为零则为真,-u file,如果设置了用户,ID,则为真,-w file,如果文件可写则为真,-x file,如果文件可执行则为真,shell,基础,流程控制命令,1)while.Do .,Done,while-loop,将运行直到表达式测试为真。,will run while the expression that we,test for is true.,关键字,break,用来跳出循环。而关键字”,continue”,用来不执行余下的部分而直接跳到下一个循环。,2)for var in.do.,Done,for-loop,表达式查看一个字符串列表,(,字符串用空格分隔,),然后将其赋给一个变量:,3)case.in,.).;,Esac,case,表达式可以用来匹配一个给定的字符串,oracle,基础,数据库安装,Windows环境下:,网上下载安装包 点击安装 全选默认配置即可。,其它机器上已有server端,可只安client端。,PLSQL软件是一个优秀的oracle工具,建议安装,unix环境下:,建oracle组和用户,在oracle用户下安装,授予其它用户执行oracle命令的权限,oracle,基础,数据库的连接,Client端连接配置,到oracle安装目录下 搜索tnsnames.ora,增加修改相应连接内容,ORCL=,(DESCRIPTION=,(ADDRESS=(PROTOCOL=TCP)(HOST=cg)(PORT=1521),(CONNECT_DATA=,(SERVER=DEDICATED),(SERVICE_NAME=orcl),),),mdb=,(DESCRIPTION=,(ADDRESS=(PROTOCOL=TCP)(HOST=128.160.96.21)(PORT=1521),(CONNECT_DATA=,(SERVER=DEDICATED),(SID=mdb),),),oracle,基础,数据库的连接,Unix,环境 先设置编辑器,export EDITOR=vi,select parameter,value from nls_database_parameters where parameter=NLS_CHARACTERSET;,-,显示数据库字符集,NLS_LANG,应与数据库字符集一致,export NLS_LANG=“SIMPLIFIED CHINESE.ZHS16GBK”,export NLS_DATE_FORMAT=YYYY-MM-DD-HH24.MI.SS,命令行:,sqlplus username/passwordserver as sysdba as sysoper,sqlplus/as sysdba-,管理员进入,sqlplus etl/etlmdb -,普通用户进入,SQLset linesize 300;-,设置行长度,SQLset pagesize 1;-,设置页长度,SQLcol name format a30;-,设置列格式,SQLselect sysdate from dual;-,运行语句,oracle,基础,数据库的连接,Plsql是一款优秀的操作oracle图形界面软件,Sql window 可单条执行sql,Command window 可批量执行多条sql,oracle,基础,表空间,ORACLE,数据库被划分成称作为表空间的逻辑区域,形成,ORACLE,数据库的逻辑结构。一个,ORACLE,数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是,ORACLE,数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。,每个,ORACLE,数据库均有,SYSTEM,表空间,这是数据库创建时自动创建的。,SYSTEM,表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息,(,关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它,ORACLE,软件产品要求的表,),。,一个小型应用的,ORACLE,数据库通常仅包括,SYSTEM,表空间,然而一个稍大型应用的,ORACLE,数据库采用多个表空间会对数据库的使用带来更大的方便。,oracle,基础,表空间,建立本地管理表空间,CREATE TABLESPACE tablespace_name DATAFILE file_name SIZE,file_size UNIFORM SIZE extent_size|AUTOALLOCATE,CREATE TABLESPACE DATATBS01_32K,DATAFILE/home/mdb/oracle/oradata/mdb/datatbs01_01.dbf SIZE 100G,/home/mdb/oracle/oradata/mdb/datatbs01_02.dbf SIZE 100G,/home/mdb/oracle/oradata/mdb/datatbs01_03.dbf SIZE 100G,EXTENT MANAGEMENT LOCAL,UNIFORM SIZE 32M,SEGMENT SPACE MANAGEMENT AUTO,blocksize 32k,oracle,基础,表空间,建立UNDO表空间,CREATE UNDO TABLESPACE tablespace_name DATAFILE file_name SIZE,file_size UNIFORM SIZE extent_size|AUTOALLOCATE,建立临时表空间:存放查询、排序、分组等生成的临时数据,CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE file_name SIZE,file_size UNIFORM SIZE extent_size|AUTOALLOCATE,oracle,基础,表空间,改变表空间可用性,ALTER TABLESPACE tablespace_name online|offline,改变表空间读写状态,ALTER TABLESPACE tablespace_name READ WRITE|READ ONLY,改变表空间名称,ALTER TABLESPACE tablespace_name RENAME TO new_tbs_name,设置默认表空间,ALTER DATABASE DEFAULT TABLESPACE tablespace_name -数据库默认表空间,ALTER DATABASE DEFAULT TEMPORARY tablespace_name -数据库默认临时表空间,删除表空间,DROP TABLESPACE tablespace_name,INCLUDING CONTENTS AND DATAFILES;,oracle,基础,用户管理,建立用户,create user ETL,identified by,default tablespace ETLDATA01,temporary tablespace TEMP1,profile DEFAULT;,给用户授权,grant connect to etl;,grant select_catalog_role to etl;,grant select any table to etl;,grant create session to etl;,grant alter session to etl;,grant create table to etl;,grant create view to etl;,grant create type to etl;,grant create synonym to etl;,grant create sequence to etl;,grant create procedure to etl;,oracle,基础,用户管理,修改口令,ALTER USER user_name IDENTIFIED BY new_password;,修改默认表空间,ALTER USER user_name DEFAULT TABLESPACE new_tablespace_name;,锁定用户,ALTER USER etl ACCOUNT LOCK;,解锁用户,ALTER USER etl ACCOUNT UNLOCK,;,删除用户,DROP USER username CASCADE;,oracle,基础,表建立及管理,普通建表,CREATE TABLE schema.table_name(,column_name datatype DEFAULT expr,),TABLESPACE tablespace_name;,使用子查询建表,CREATE TABLE schema.table_name(column_name,),TABLESPACE tablespace_name,AS subquery;,建临时表,-事务临时表 当前事务内有效,CREATE GLOBAL TEMPORARY TABLE table_name(,column_name,),ON COMMIT DELETE ROWS;,-会话临时表 当前会话内有效,CREATE GLOBAL TEMPORARY TABLE table_name(,column_name,),ON COMMIT PRESERVE ROWS;,oracle,基础,表建立及管理,增加列,ALTER TABLE table_name ADD,(column datatype DEFAULT expr);,修改列定义,ALTER TABLE table_name MODIFY,(column datatype DEFAULT expr);,删除列,ALTER TABLE table_name DROP(column);,修改列名,ALTER TABLE table_name,RENAME COLUMN column_name to new_column_name;,增加注释,COMMENT ON TABLE table_name IS text;,COMMENT ON COLUMN table_name.column_name IS text;,迁移非分区表的表空间,ALTER TABLE table_name MOVE new_tablespace_name;,-表对应索引需重建,oracle,基础,表建立及管理,截断表,-快速删除数据 释放空间 保留表结构,-是DDL语句 不可回退,TRUNCATE TABLE table_name;,-delete,是DML语句 可回退,删除表,-PURGE是oracle 10g 新特性 表永久删除,DROP TABLE table_name CASCADE CONSTRAINTS PURGE;,从回收站Recyclebin恢复被删除表,FLASHBACK TABLE table_name TO BEFORE DROP;,清空回收站,PURGE RECYCLEBIN;,查看回收站,SELECT*FROM RECYCLEBIN;,oracle,基础,表建立及管理,表,SELECT*FROM USER_TABLES;,对象,SELECT*FROM USER_OBJECTS;,表占用的空间,select,sum,(bytes),from,user_segments,where,segment_name=table_name;,清空回收站,PURGE RECYCLEBIN;,查看回收站,SELECT*FROM RECYCLEBIN;,查看表的列,SELECT*FROM USER_TAB_COLUMNS;,查看注释,SELECT*FROM USER_TAB_COMMENTS;,SELECT*FROM USER_COL_COMMENTS;,查看建表语句,SELECT dbms_metadata.get_ddl(TABLE,),FROM dual;,SELECT,dbms_metadata.get_ddl(TABLE,upper(tmpcg_ctl_paravalue),upper(etl),FROM,dual;,oracle,基础,索引,建索引,CREATE INDEX UNIQUE index_name ON table_name(column_name,.)TABLESPACE tablespace_name,;,-不设表空间 则建在用户默认表空间上,维护索引,ALTER INDEX index_name REBUILD TABLESPACE tablespace_name,;,-可改变索引表空间,显示索引信息,SELECT*FROM USER_INDEXES;,SELECT*FROM USER_IND_COULMNS;,-查找失效的非分区索引,SELECT *FROM USER_INDEXES WHERE STATUS=UNUSABLE;,查看建索引语句,SELECT dbms_metadata.get_ddl(INDEX,)FROM dual;,SELECT dbms_metadata.get_ddl(INDEX,upper(idx_tmpcg_ctl_paravalue),upper(etl),FROM,dual;,oracle,基础,序列,序列(Sequence)是用于生成唯一数字的数据库对象,自动生成顺序递增的序列号,可提供唯一的主键值,事务回滚值不会减少,建序列,CREATE SEQUENCE seq_name INCREMENT BY n,START WITH n MAXVALUE n|NOMAXVALUE,;,MINVALUE n|NOMINVALUECYCLE|NOCYCLE,CACHE n|NOCACHE;,使用序列,INSERT INTO t1(id)VALUES(t1id_seq.NEXTVAL),;,SELECT t1id_seq.CURRVAL FROM dual;,删除序列,DROP SEQUENCE seq_name,;,显示序列信息,SELECT*FROM SEQ;,查看建序列语句,SELECT dbms_metadata.get_ddl(SEQUENCE,)FROM dual;,oracle,基础,分区表,ORACLE的分区(Partitioning Option)是一种处理超大型表的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。,ORACLE的分区表的划分方法包括:按字段值进行划分的范围分区;按字段的HASH函数值进行的划分HASH分区;先按范围划分,再按HASH划分的复合分区;在ORACLE9i中又增强了按字段值列表进行划分的列表(Listing)分区方法。,管理员可以指定每个分区的存储属性,分区在宿主文件系统中的放置情况,这样便增加了对超大型数据库的控制粒度(granularity)。分区可以被单独地删除、卸出或装入、备份、恢复,因此减少了需要进行管理操作的时间。,还可以为表分区创建单独的索引分区,从而减少了需要进行索引维护操作的时间。此外,还提供了种类繁多的局部和全局的索引技术。分区操作也可以被并行执行。,分区技术还提高了数据的可用性。当部分数据由于故障或其它原因不可用时,其它分区内的数据可不受影响继续使用。,分区对应用是透明的,可以通过标准的SQL语句对分区表进行操作。Oracle 的优化器在访问数据时会分析数据的分区情况,在进行查询时,那些不包含任何查询数据的分区将被忽略,从而大大提高系统的性能。,总之,Oracle的分区表技术能满足高性能、高可用性、数据易管理性等综合需求。,oracle,基础,分区表设计原则,表的大小,对于大表进行分区,将有益于大表操作的性能和大表的数据维护。通常当表的大小超过1.5GB2GB,或对于OLTP系统,表的记录超过1000万,都应考虑对表进行分区。,数据访问特性,基于表的大部分查询应用,只访问表中少量的数据。对于这样表进行分区,可充分利用分区排除无关数据查询的特性。,数据维护,某些表的数据维护,经常按时间段删除成批的数据,例如按月删除历史数据。对于这样的表需要考虑进行分区,以满足维护的需要。因为删除(Delete)大量的数据,对系统开销很大,有时甚至是不可接受的。,只读数据,如果一个表中大部分数据都是只读数据,通过对表进行分区,可将只读数据存储在只读表空间中,对于数据库的备份是非常有益的。,并行数据操作(Parallel DML),对于经常执行并行操作(如Parallel Insert,Parallel Update等)的表应考虑进行分区。,表的可用性,当对表的部分数据可用性要求很高时,应考虑进行表分区。,oracle,基础,分区表,范围分区表创建脚本,CREATE TABLE HIS_EVT_DCC_FCMAUDI(,cm_rec_ll integer,cm_tx_dt varchar2(8),)PARTITION BY RANGE(CM_TX_DT),(,PARTITION ETL_LOAD_DATE_0508 VALUES LESS THAN(20050901),TABLESPACE etl0_r_jyrq_data_200508,PARTITION ETL_LOAD_DATE_0509 VALUES LESS THAN(20051001),TABLESPACE etl0_r_jyrq_data_200509,PARTITION ETL_LOAD_DATE_0510 VALUES LESS THAN(20051101),TABLESPACE etl0_r_jyrq_data_200510,PARTITION ETL_LOAD_DATE_0511 VALUES LESS THAN(20051201),TABLESPACE etl0_r_jyrq_data_200511,PARTITION ETL_LOAD_DATE_0512 VALUES LESS THAN(20060101),TABLESPACE etl0_r_jyrq_data_200512,);,CREATE UNIQUE INDEX HIS_EVT_DCC_FCMAUDI_UIDX ON HIS_EVT_DCC_FCMAUDI,(,CM_TX_DT ASC,CM_TX_LOG_NO ASC,CM_TX_COD ASC,CM_EC_FLG ASC,)LOCAL(,PARTITION ETL_LOAD_DATE_0508 TABLESPACE etl0_r_jyrq_idx_200508,PARTITION ETL_LOAD_DATE_0509 TABLESPACE etl0_r_jyrq_idx_200509,PARTITION ETL_LOAD_DATE_0510 TABLESPACE etl0_r_jyrq_idx_200510,PARTITION ETL_LOAD_DATE_0511 TABLESPACE etl0_r_jyrq_idx_200511,PARTITION ETL_LOAD_DATE_0512 TABLESPACE etl0_r_jyrq_idx_200512,);,oracle,基础,分区表,HASH分区表创建脚本,CREATE TABLE PERSONAL_CUSTOMER_INFO(),PARTITION BY HASH(CI-CUST-NO)PARTITIONS 64,TABLESPACE TS_ODS_DATA;,复合分区表创建脚本,CREATE TABLE FACT_DCC_SAACNACN_PERSONAL (txn_date,sa-acct-no),PARTITION BY RANGE(时间字段),SUBPARTITION BY HASH(SA-ACCT-NO),SUBPARTITION TEMPLATE,(SUBPARTITION s1,SUBPARTITION s2,SUBPARTITION s3,);,oracle,基础,分区表,查询,SELECT*FROM his_evt_dcc_fcmaudi PARTITION(ETL_LOAD_DATE_0508);,清分区数据,ALTER TABLE his_evt_dcc_fcmaudi TRUNCATE PARTITION(ETL_LOAD_DATE_0508);,新增分区,ALTER TABLE his_evt_dcc_fcmaudi ADD PARTITION ETL_LOAD_DATE_0601 VALUES LESS THAN(20060201),TABLESPACE etl0_r_jyrq_data_200612;,删除分区,ALTER TABLE his_evt_dcc_fcmaudi DROP PARTITION ETL_LOAD_DATE_0508;,oracle,基础,分区表,分区信息查询,SELECT*FROM USER_TAB_PARTITIONS;,SELECT,*,FROM,USER_TAB_SUBPARTITIONS;,SELECT,*,FROM,USER_IND_PARTITIONS;,加上 WHERE STATUS=UNUSABLE 可查询失效的分区索引,SELECT,*,FROM,USER_IND_SUBPARTITIONS;,加上 WHERE STATUS=UNUSABLE 可查询失效的子分区索引,SELECT*FROM USER_SEGMENTS;,oracle,基础,sqlldr,用法:SQLLDR keyword=value,keyword=value,.,sqlldr$1 control=tb.ctl errors=10000 rows=100000 bindsize=8192000 readsize=8192000 log=tbldr.log bad=tbldr.bad direct=true,有效的关键字:,userid-ORACLE 用户名/口令,control-控制文件名,log-日志文件名,bad-错误文件名,data-数据文件名,discard-废弃文件名,discardmax-允许废弃的文件的数目 (全部默认),skip-要跳过的逻辑记录的数目 (默认 0),load-要加载的逻辑记录的数目 (全部默认),errors-允许的错误的数目 (默认 50),rows-常规路径绑定数组中或直接路径保存数据间的行数,(默认:常规路径 64,所有直接路径),bindsize-常规路径绑定数组的大小(以字节计)(默认 256000),silent-运行过程中隐藏消息(标题,反馈,错误,废弃,分区),direct-使用直接路径 (默认 FALSE),parfile-参数文件:包含参数说明的文件的名称,parallel-执行并行加载 (默认 FALSE),file-要从以下对象中分配区的文件,oracle,基础,sqlldr,控制文件,LOAD DATA,INFILE test.txt,INTO TABLE DEPT,REPLACE,FIELDS TERMINATED BY,OPTIONALLY ENCLOSED BY,(DEPTNO,DNAME,LOC,),oracle,基础,文本数据导出,Oracle,没有提供将数据导出到一个文件的工具。但是我们可以用,SQL*Plus,的,select,及,format,数据来输出到一个文件:,set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on,spool oradata.txt,select col1|,|col2|,|col3,from tab1,where col2=XYZ;,spool off,oracle,基础,数据库备份导入导出,EXP:exp help
展开阅读全文