CREATE OR REPLACE VIEW语句的语法格式如下:
CREATE OR REPLACE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
ALGORITHM:可选。表示视图选择的算法。
UNDEFINED:表示MySQL将自动选择所要使用的算法。
MERGE:表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
TEMPTABLE:表示将视图的结果存入临时表,然后使用临时表执行语句。
视图名:表示要创建的视图的名称。
属性清单:可选。指定了视图中各个属性的名词,默认情况下,与SELECT语句中查询的属性相同。
SELECT语句:是一个完整的查询语句,表示从某个表中查出某些满足条件的记录,将这些记录导入视图中。
WITH CHECK OPTION:可选。表示修改视图时要保证在该视图的权限范围之内。
CASCADED:可选。表示修改视图时,需要满足跟该视图有关的所有相关视图和表的条件,该参数为默认值。
LOCAL:表示修改视图时,只要满足该视图本身定义的条件即可。
Local plate restrictions可以翻译为“本地板块限制。”
重点单词:plate:英 [pleɪt] 美 [pleɪt]
n 盘子,碟子;一盘(食物);平板,金属护板(片);(刻有名字等的)金属牌子;(车辆的)号码牌;镀金层,镀银层;餐具;盾片,鳞甲;(地质)板块;
v 给……镀(金属);给……加上装甲;用鳞片覆盖;摆盘;(
名 (Plate)(英、德、俄、西、意、瑞典)普拉特(人名)
词形变换: 复数 plates; 第三人称单数 plates; 现在分词 plating; 过去式 plated; 过去分词 plated 。
相关短语:
angle plate 直角板 ; [建] [机] 角板 ; [建] 角型板 ; 角钢
agar plate [微] 琼脂平板 ; 琼脂平面 ; 琼脂平皿 ; 培养基
bottom plate 下托板 ; 下固定板 ; 船底板
双语例句:
She eyed the fish on her plate suspiciously
她不放心地看着自己盘子里的鱼。
The metal plate behind my head radiated heat
我脑后的金属盘散发出热量。
不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本可以使用标准的INSTR函数和LIKE *** 作符实现。SELECT FROM mytext WHERE INSTR (thetext, 'Oracle') > 0;
SELECT FROM mytext WHERE thetext LIKE '%Oracle%';
有很多时候,使用instr和like是很理想的, 特别是搜索仅跨越很小的表的时候然而通过这些文本定位的方法将导致全表扫描,对资源来说消耗比较昂贵,而且实现的搜索功能也非常有限,因此对海量的文本数据进行搜索时,建议使用oralce提供的全文检索功能 建立全文检索的步骤步骤一 检查和设置数据库角色首先检查数据库中是否有CTXSYS用户和CTXAPP脚色。如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。你必须修改数据库以安装这项功能。 默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys的用户。 步骤二 赋权 在ctxsys用户下把ctx_ddl的执行权限赋于要使用全文索引的用户,例:
grant execute on ctx_ddl to pomoho;
步骤三 设置词法分析器(lexer)
Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为 term)找出来,记录在一组 以dr$开头的表中,同时记下该term出现的位置、次数、hash 值等信息。检索时,Oracle 从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而lexer则是该机制的核心,它决定了全文检索的效率。Oracle 针对不同的语言提供了不同的 lexer, 而我们通常能用到其中的三个:
n basic_lexer: 针对英语。它能根据空格和标点来将英语单词从句子中分离,还能自动将一些出现频率过高已经失去检索意义的单词作为‘垃圾’处理,如if , is 等,具有较高的处理效率。但该lexer应用于汉语则有很多问题,由于它只认空格和标点,而汉语的一句话中通常不会有空格,因此,它会把整句话作为一个 term,事实上失去检索能力。以‘中国人民站起来了’这句话为例,basic_lexer 分析的结果只有一个term ,就是‘中国人民站起来了’。此时若检索‘中国’,将检索不到内容。
n chinese_vgram_lexer: 专门的汉语分析器,支持所有汉字字符集(ZHS16CGB231280 ZHS16GBK ZHT32EUC ZHT16BIG5 ZHT32TRIS ZHT16MSWIN950 ZHT16HKSCS UTF8 )。该分析器按字为单元来分析汉语句子。‘中国人民站起来了’这句话,会被它分析成如下几个term: ‘中’,‘中国’,‘国人’,‘人民’,‘民站’,‘站起’,起来’,‘来了’,‘了’。可以看出,这种分析方法,实现算法很简单,并且能实现‘一网打尽’,但效率则是差强人意。
n chinese_lexer: 这是一个新的汉语分析器,只支持utf8字符集。上面已经看到,chinese vgram lexer这个分析器由于不认识常用的汉语词汇,因此分析的单元非常机械,像上面的‘民站’,‘站起’在汉语中根本不会单独出现,因此这种term是没有意义的,反而影响效率。chinese_lexer的最大改进就是该分析器 能认识大部分常用汉语词汇,因此能更有效率地分析句子,像以上两个愚蠢的单元将不会再出现,极大 提高了效率。但是它只支持 utf8, 如果你的数据库是zhs16gbk字符集,则只能使用笨笨的那个Chinese vgram lexer
如果不做任何设置,Oracle 缺省使用basic_lexer这个分析器。要指定使用哪一个lexer, 可以这样 *** 作:
第一. 当前用户下下建立一个preference(例:在pomoho用户下执行以下语句)
exec ctx_ddlcreate_preference ('my_lexer', 'chinese_vgram_lexer');
第二. 在建立全文索引索引时,指明所用的lexer:
CREATE INDEX myindex ON mytable(mycolumn) indextype is ctxsyscontext
parameters('lexer my_lexer');
这样建立的全文检索索引,就会使用chinese_vgram_lexer作为分析器。
步骤四 建立索引
通过以下语法建立全文索引
CREATE INDEX [schema]index on [schema]table(column) INDEXTYPE IS ctxsyscontext [ONLINE]
LOCAL [(PARTITION [partition] [PARAMETERS('paramstring')]
[, PARTITION [partition] [PARAMETERS('paramstring')]])]
[PARAMETERS(paramstring)] [PARALLEL n] [UNUSABLE];
例:
CREATE INDEX ctx_idx_menuname ON pubmenu(menuname)
indextype is ctxsyscontext parameters('lexer my_lexer')
步骤五 使用索引
使用全文索引很简单,可以通过:
select from pubmenu where contains(menuname,'上传')>0
全文索引的种类
建立的Oracle Text索引被称为域索引(domain index),包括4种索引类型:
l CONTEXT
2 CTXCAT
3 CTXRULE
4 CTXXPATH
依据你的应用程序和文本数据类型你可以任意选择一种。
对多字段建立全文索引
很多时候需要从多个文本字段中查询满足条件的记录,这时就需要建立针对多个字段的全文索引,例如需要从pmhsubjects(专题表)的 subjectname(专题名称)和briefintro(简介)上进行全文检索,则需要按以下步骤进行 *** 作:
Ø 建议多字段索引的preference
以ctxsys登录,并执行:
EXEC ctx_ddlcreate_preference(' ctx_idx_subject_pref',
'MULTI_COLUMN_DATASTORE');
Ø 建立preference对应的字段值(以ctxsys登录)
EXEC ctx_ddlset_attribute(' ctx_idx_subject_pref ','columns','subjectname,briefintro');
Ø 建立全文索引
CREATE INDEX ctx_idx_subject ON pmhsubjects(subjectname)
INDEXTYPE ISctxsysCONTEXT PARAMETERS('DATASTORE ctxsysctx_idx_subject_pref lexer my_lexer')
Ø 使用索引
select from pmhsubjects where contains(subjectname,'李宇春')>0
全文索引的维护
对于CTXSYSCONTEXT索引,当应用程序对基表进行DML *** 作后,对基表的索引维护是必须的。索引维护包括索引同步和索引优化。
在索引建好后,我们可以在该用户下查到Oracle自动产生了以下几个表:(假设索引名为myindex):
DR$myindex$I、DR$myindex$K、DR$myindex$R、DR$myindex$N其中以I表最重要,可以查询一下该表,看看有什么内容:
SELECT token_text, token_count FROM dr$i_rsk1$I WHERE ROWNUM <= 20;
这里就不列出查询接过了。可以看到,该表中保存的其实就是Oracle 分析你的文档后,生成的term记录在这里,包括term出现的位置、次数、hash值等。当文档的内容改变后,可以想见这个I表的内容也应该相应改变,才能保证Oracle在做全文检索时正确检索到内容(因为所谓全文检索,其实核心就是查询这个表)。这就用到sync(同步) 和 optimize(优化)了。
同步(sync): 将新的term 保存到I表;
优化(optimize): 清除I表的垃圾,主要是将已经被删除的term从I表删除。
当基表中的被索引文档发生insert、update、delete *** 作的时候,基表的改变并不能马上影响到索引上直到同步索引。可以查询视图 CTX_USER_PENDING查看相应的改动。例如:
SELECT pnd_index_name, pnd_rowid,
TO_CHAR (pnd_timestamp, 'dd-mon-yyyy hh24:mi:ss') timestamp
FROM ctx_user_pending;
该语句的输出类似如下:
PND_INDEX_NAME PND_ROWID TIMESTAMP
------------------------------ ------------------ --------------------
MYINDEX AAADXnAABAAAS3SAAC 06-oct-1999 15:56:50
同步和优化方法: 可以使用Oracle提供的ctx_ddl包同步和优化索引
一 对于CTXCAT类型的索引来说, 当对基表进行DML *** 作的时候,Oracle自动维护索引。对文档的改变马上反映到索引中。CTXCAT是事务形的索引。
索引的同步
在对基表插入,修改,删除之后同步索引。推荐使用sync同步索引。语法:
ctx_ddlsync_index(
idx_name IN VARCHAR2 DEFAULT NULL
memory IN VARCHAR2 DEFAULT NULL,
part_name IN VARCHAR2 DEFAULT NULL
parallel_degree IN NUMBER DEFAULT 1);
idx_name 索引名称
memory 指定同步索引需要的内存。默认是系统参数DEFAULT_INDEX_MEMORY 。
指定一个大的内存时候可以加快索引效率和查询速度,且索引有较少的碎片
part_name 同步哪个分区索引。
parallel_degree 并行同步索引。设置并行度。
例如:
同步索引myindex:Exec ctx_ddlsync_index ('myindex');
实施建议:建议通过oracle的job对索引进行同步
索引的优化
经常的索引同步将会导致你的CONTEXT索引产生碎片。索引碎片严重的影响了查询的反应速度。你可以定期优化索引来减少碎片,减少索引大小,提高查询效率。
当文本从表中删除的时候,Oracle Text标记删除的文档,但是并不马上修改索引。因此,就的文档信息占据了不必要的空间,导致了查询额外的开销。你必须以FULL模式优化索引,从索引中删除无效的旧的信息。这个过程叫做垃圾处理。当你经常的对表文本数据进行更新,删除 *** 作的时候,垃圾处理是很必要的。
exec ctx_ddloptimize_index ('myidx', 'full');
实施建议:每天在系统空闲的时候对全文索引进行相应的优化,以提高检索的效率
PS定时优化索引
3定时优化同步域索引
创建定时任务,定期优化和同步域索引
SQL> create or replace procedure hsp_sync_index as
2 begin
3 ctx_ddlsync_index('id_cont_msg');
4 end;
5 /
Procedure created
Elapsed: 00:00:0008
SQL> VARIABLE jobno number;
SQL> BEGIN
2 DBMS_JOBSUBMIT(:jobno,'hsp_sync_index();',
3 SYSDATE, 'SYSDATE + (1/24/4)');
4 commit;
5 END;
6 /
PL/SQL procedure successfully completed
Elapsed: 00:00:0027
SQL> create or replace procedure hsp_optimize_index as
2 begin
3 ctx_ddloptimize_index('id_cont_msg','FULL');
4 end;
5 /
SQL> VARIABLE jobno number;
SQL> BEGIN
2 DBMS_JOBSUBMIT(:jobno,'hsp_optimize_index();',
3 SYSDATE, 'SYSDATE + 1');
4 commit;
5 END;
6 /
Procedure created
Elapsed: 00:00:0003
PL/SQL procedure successfully completed
Elapsed: 00:00:0002
SQL>我们在windows开发机上使用spark的local模式读取远程hadoop集群中的hdfs上的数据,这样的目的是方便快速调试,而不用每写一行代码或者一个方法,一个类文件都需要打包成jar上传到linux上,再扔到正式的集群上进行测试,像功能性验证直接使用local模式来快速调测是非常方便的,当然功能测试之后,我们还需要打包成jar仍到集群上进行其他的验证比如jar包的依赖问题,这个在local模式是没法测的,还有集群运行的调优参数,这些都可以在正式仍到集群时验证。
一个样例代码如下:
def main(args: Array[String]): Unit = { //指定local模式
val conf = new SparkConf()setMaster("local[2]")setAppName("read kp data to kafka") val sc= new SparkContext(conf) //支持通配符路径,支持压缩文件读取
val rrd=sctextFile("hdfs://192168104:8020/data/log/{20170227,20170228}/tomcat-log") //提到到集群模式时,去掉uri地址,如果有双namenode,可以自动容灾
//val rrd=sctextFile("/data/log/{20170227,20170228}/tomcat-log")
//统计数量
println(rrdcount()) //停止spark
scstop()
}
如何在spark中遍历数据时获取文件路径:
val path:String="hdfs://192168104:8020/data/userlog/{20170226}/kp"
val text= scnewAPIHadoopFile[LongWritable,Text,TextInputFormat](path)
val linesWithFileNames = textasInstanceOf[NewHadoopRDD[LongWritable, Text]]
mapPartitionsWithInputSplit((inputSplit, iterator) => {
val file = inputSplitasInstanceOf[FileSplit] iteratormap(tup => (filegetPath, tup_2)) // 返回的K=全路径 V=每一行的值
}
)
linesWithFileNamesforeach(println)
如果遍历压缩文件时想要获取文件名,就使用newAPIHadoopFile,此外在本地调试下通过之后,提交到集群运行的时候,一定要把uri去掉,本地加上是想让它远程读取方便调试使用,如果正式运行去掉uri在双namenode的时候可以自动兼容,不去反而成一个隐患了。
最后我们可以通过spark on yarn模式提交任务,一个例子如下:
jars=`echo /home/search/x_spark_job/libs/jar | sed 's/ /,/g'`
bin/spark-submit --class KSearch --master yarn --jars $jars /home/search/x_spark_job/kp-100jar
这里用spark提交有另外一个优势,就是假如我开发的不是YARN应用,就是代码里没有使用SparkContext,而是一个普通的应用,就是读取mysql一个表的数据,写入另外一个mysql,这里跟MR没有关系,但是我依然可以用spark-sumbit提交,这时候是不会提交到YARN上的,但是程序会按普通程序运行,程序依赖的jar包,直接使用--jars传入就行,这一点非常方便,尤其是应用有多个依赖时,比如依赖es,hadoop,hbase,redis,fastjson,我打完包后的程序是瘦身的只有主体jar非常小,依赖的jar我可以不打到主体jar里面,在外部用的时候传入,方便共用并灵活性大大提高。请看2005年一道湖南高考试题:
The more I think about him, the more reasons I find for loving him _____ I did
A as much as B as long as
C as soon as D as far as
在2005的高考考纲词汇表和英语教学大纲中对as的用法表述如下:1)conj & adv像……一样;如同; 2)asas像,如同; 3)not soas不像、不如; 4)as if / as though好像、好似;5)prep 作为、当作。但从历年高考试题可以看出,作为高考重要考点的as的命题范围不仅仅限于以上五点,这是由as本身的多功能用法所决定的。本文结合历年高考试题,对其常见的考点进行剖析。
考点一:用于比较级,表示“相等、相似、一样”。
结构是asas,前一个as是副词,在否定句中也可以用so,后跟被修饰的形容词或副词原级。如果所跟形容词修饰可数名词单数,则用as + adj + a (an) + 名词 + as,其中后面的as是连词。
[考例]
He speaks English well indeed, but of course not _____ a native speaker (2004上海)
A as fluent as B more fluent than
C so fluently as D much fluently than
[解析]答案为C。根据句意可看出应该是用副词修饰谓语动词speak,排除形容词的A、B项;根据比较级排除D项,C项是soas结构,由于是否定句,所以选“so fluently as”。
考点二:as many / much / far / longas + 具体数目表示达到某种程度,译作“多达…… / 远到…… / 时间长达……”。
[考例1]
John is the tallest boy in the class _______ according to himself (2005安徽)
A five foot eight as tall as
B as tall as five foot eight
C as five foot eight tall as
D as tall five foot eight as
[解析] 答案为B。根据句意可看出是表示“高达58英尺”,所以用本结构,表示具体高度的five foot eight应该置于连词as之后,排除A、C和D。
[考例2]
After supper she would sit down by the fire, sometimes for _______ an hour, thinking of her young and happy days (2003上海春招)
A as long as B as soon as
C as much as D as many as
[解析] 答案为A。本题考查相同比较级结构的不同意义。根据题干中的具体时间an hour可以看出是指时间的长度。
考点三:as用于表示倍数的句型中
如果表示A是B的X倍可以用句型“A is X times as + adj / adv + as B”。
[考例1]
What a terrible table! I’ve never seen such a thing before It is _______ it is long (2005湖北)
A half not as wide as
B wide not as half as
C not half as wide as
D as wide as not half
[解析] 答案为C。根据倍数表达方式排除B和D,根据句意看出not否定be动词,本句意为:“这是一张什么样的桌子!我以前从来没有见过这样的东西,它的宽度竟然不到它的长度的一半”。
[考例2]
The house rent is expensive I’ve got about half the space I had at home and I’m paying _______ here(2003上海)
A as three times much
B as much three times
C much as three times
D three times as much
[解析] 答案为D。根据句型结构把倍数置于as之前,排除A、B和C,因此只有D项符合。
考点四:as引导限制性定语从句
as作为关系代词可以引导限制性定语从句,通常与the same或such连用。
[考例]
The houses are sold at such a low price _______ people expect (2000上海春招)
A like B as
C that D which
[解析] 答案为B。如果按照“suchthat”的结构理解为“如此……以至于……”,则不符合题意,因此应该理解为定语从句。事实上,根据从句中的expect是及物动词,而其没有宾语,可以推断所需要的连接从句的连词在从句中作宾语,那么只有从定语从句方面考虑。
要注意与suchthat所引导的结果状语从句之间的区别。如果从句中缺少主语、宾语或表语,就说明所用的连词是关系代词,从而可以推断是定语从句,否则就视为状语从句。例如:He made such rapid progress that before long he began to write articles in English for an American newspaper
考点五:as引导非限制性定语从句
as与which一样都可以引导非限制性定语从句,但是,which不可以置于句首,而as可以,并且还有“
就像、正如”之意。
[考例]
_______ is reported in the newspapers, talks between the two countries are making progress (2004北京)
A It B As
C That D What
[解析] 答案为B。本题考查as引导的非限制性定语从句的用法。根据句中的逗号可以看出是复合句,需要连词连接,排除A;What引导名词性从句;That不可以引导非限制性定语从句。所以只可以选B,as引导非限制性定语从句。
考点六:as用于不定式中
不定式短语so as to do sth在句中作目的状语,同in order to do sth,但不可以用于句首; so + adj / adv + as to do sth在句中作结果状语,(例如:The bird flew so fast as to escape being shot)二者的否定形式是在to前直接加not。
[考例1]
All these gifts must be mailed immediately _______ in time for Christmas (2005辽宁)
A in order to have received
B in order to receive
C so as to be received
D so as to be receiving
[解析] 答案为C。本题的so as to也可以换作in order to,由此可以看出所给的四个选项的区别在于不定式时态和语态上。根据句子的主语可以推出不定式应该是被动形式,即礼物“被收到”。考点七:asas形为比较级,实际上已经被赋予其他意义,可以作连词,多用于引导状语从句,从句的谓语动词要用一般现在时表示一般将来时,一般过去时表示过去将来时。例如:
1 as soon as“一……就……”。
[考例]
The new secretary is supposed to report to the manager as soon as she arrives(1990 MET)
2 as far as“就……而言, 远到,一直到,至于、到达某一点、程度或范围”。
[考例]
_______ I can see, there is only one possible way to keep away from the danger (2004北京春
招)
A As long as B As far as
C Just as D Even if
3 as(so) long as“只要……就……”。
[考例]
_______ I know, the money is safe I shall not worry about it (2003北京)
A Even though B Unless
C As long as D While
4 as well as “与……一样”,而as well 有too(也)的意思。
[考例]
Let Harry play with your toys as well, Clare, you must learn to share (2000 NMET)
注意当as well as 连接两个主语,强调前者,所以谓语动词的人称和数应与前面的主语保持一致。试比较:
Not only Peter but also his parents are going to pay a visit to the Great Wall
Peter as well as his parents is going to pay a visit to the Great Wall
5 as good as“几乎、几乎等于、像……一样”。例如:
The book he lost is as good as new
考点八: as引导状语从句
as作为连词可以引导状语从句,表示时间、原因、方式、让步等。
1 引导时间状语,意思是“当……时”,同while / when,更强调“一边……一边……”。表“随着……”的意思时同with,但with是介词,不可以跟句子。
[考例1]
With production up by 60%, the company has had another excellent year (2000 NMET)
[考例2]
Mother was worried because little Alice was ill, especially as Father was away in France (1994 NMET)
[考例3]
As the day went on, the weather got worse (1990 MET)
2 引导原因状语从句,同since。
[考例]
We had better hurry _______ it is getting dark(1984 MET)
A and B but
C as D unless
3 引导让步状语从句,意思同though或although,但通常要用倒装结构。可以把从句中宾语、表语、状
语甚至谓语动词置于句首,如果是带有冠词的可数名词单数作表语,置于句首时应省去冠词。
[考例1]
_______, Carolina couldn’t get the door open(2005广东)
A Try as she might B As she might try
C She might as try D Might she as try
[考例2]
_______, I have never seen anyone who’s as capable as John (2001上海)
A As long as I have traveled
B Now that I have traveled so much
C Much as I have traveled
D As I have traveled so much
[考例3]
_______, he talks a lot about his favorite singers after class (2005重庆)
A A quiet student as he may be
B Quiet student as he may be
C Be a quiet student as he may
D Quiet as he may be a student
[解析]答案为B。当as从句是主系表结构,而且表语是可数名词单数时,置于as前的名词前要省略冠词。
4 引导方式状语从句,表示方式。意思是“像, 按照, 如同”。例如:
You should finish your task as you are told to
你应该按我说的那样把工作完成。
Leave it as it is 保持原状, 不要动它。
考点九:as if (as though)“好像,好似”,引导状语从句。
一般用虚拟语气;对于可能发生的事情,也可以用陈述语气。
[考例]
When a pencil is put in a glass of water, it looks as if it _______(1994 NMET)
A breaks B has broken
C were broken D had been broken
再例如:You look as if you’ve been running 你好像跑了一阵似的。
You look as if you’d seen a ghost 你像是见了鬼似的。
前一例中的“you”的确跑过,所以用陈述语气;而第二句中的“you”可能并没有看见鬼,只是表现出受惊的样子而已,所以用虚拟语气。
考点十:as 作为介词
作介词的as意思是“作为 / 以……的身份,作为 / 充当角色、身份或功能的”,而介词like的意思是“像……,诸如”。
[考例1]
I feel that one of my main duties _______ a teacher is to help the students to become better learners (2004广东)
A for B by
C as D with
[考例2]
_______ most students, she was always prepared and never came to class late (1998上海)
A Like B As
C For D To
另外,以下与as有关的短语应引起考生们的重视。
as it is 事实上、其实; as it were 可以说是、好像; act as 担当、扮演、担任; work as担任; regard / consider / have / treat / look on / sb as 把……看作……;认为……是; as follows 如下; as a matter of fact事实上;such as诸如;as usual跟往常一样;be famous(known) as以(作为……)而闻名;begin as开始是……;as a result (consequence)结果是……;as a
rule通常、一般;as the old saying goes俗话说。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)