分享
 
 
 

利用数据库效用给UNIX命名管道

王朝system·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

大多数Oracle效用,比如导出,导入和SQL*装入程序,但是我们通常会直接使用标准的输入和输出。这个是UNIX 的一个问题,因为大多数时候UNIX都默认或者通过非凡选择答应你使用标准的输入或者输出。

为了接受标准的输入输出,答应你使用链式命令,比如:

tar cvf - dir gzip file.tar.gz

gunzip < file.tar.gz tar -xvf –

这些命令不需要中介文件因为管道的读或者写数据都在不同的线程中。

一个管道事实上只是一个记忆的缓冲器,它接受两个不同进程的读写,这两个进程答应它们从前到后的传送数据。记忆缓冲器通常会限制大小;当它满的时候它会阻止写进程,当它空的时候,它回限制读进程。

它们的优势就是永远不会把内存使用光也不会需要任何磁盘存储。当你没有空间存储非压缩版本的时候,上面的例子将答应你存储一个文档的压缩版本。

Oracle的导出和导入不能直接引用标准的输出和输入。但是,一个命名的小窍门答应你完成这个命令。一个命名的管道是一个UNIX文件的操作它影射到操作系统的管道中。

为了创造命名管道,你可以使用p选项来执行mknod命令。习惯上我们可以这么写:mknod -p <pipename;另外,在Linux中,我们这么书写:mknod <pipename p.大多数的系统效用中,管道的结果就似乎顺序文件,比如,压缩用户的导出文件:

mknod /tmp/mypipe p

eXP userid=scott/tiger file=/tmp/mypipe &

gzip < /tmp/mypipe exp.dat.gz

rm /tmp/mypipe

根据我的测试,压缩导出文件只是普通大小的八分之一:

mknod /tmp/mypipe p

imp userid=scott/tiger file=/tmp/mypipe &

gunzip < exp.dat.gz /tmp/mypipe

rm /tmp/mypipe

SQL*的装载程序是另外一个效用,它可以使用这个技巧。SQL*装入程序可以接受输入输出的数据。比如,你可以创建一个表格捕捉输出:

drop table lsout;

create table lsout

(

attrs char(10),

links integer,

owner varchar2(8),

grpname varchar2(8),

filesizeinteger,

crdatedate,

filenamevarchar2(256)

);

为了检测输出,可以使用SQL*装入程序控制文件:

load data

truncate

into table lsout

(

attrs position(01:10),

links position(12:15),

owner position(17:24),

grpname position(26:34),

filesizeposition(36:42),

crdateposition(44:55) DATE "Mon DD HH24:MI",

filenameposition(57:300)

)

现在,创建一个命名管道,在背景线程中创建SQL*装入程序:

#!/bin/csh

mknod /tmp/mypipe p

sqlldr userid=scott/tiger control=lsout.ctl data=/tmp/mypipe skip=1 &

ls -l /tmp/mypipe

wait

cat lsout.log

rm /tmp/mypipe

SQL*装入程序可以装入一个文件到CLOB中,因为命名管道就似乎是文件一样,你可以定义命名管道的名字来代替一个文件名并装入输出管道到数据库的CLOB中。

下面来看个例子:

create table XML_repository(doc clob);

现在,你需要创建SQL*装入程序来控制文件:

load data infile *

truncate into table xml_repository

fields terminated by whitespace

(

pipe filler,

doc lobfile(pipe) terminated by eof

)

begindata

/tmp/mypipe

为了更具体的展示这个技术,这里有一个简单的脚本。

这个脚本将把最新的文档进行命名:

#!/bin/csh

mknod /tmp/mypipe p

wget NOTRACK http://myrss.com/f/c/n/cnnGf9z390.rss -O /tmp/mypipe &

sqlldr userid=scott/tiger control=xmlload.ctl

cat xmlload.log

rm /tmp/mypipe

一旦XML文档在CLOB中,你可以使用任何新的XML导航函数。你可以利用它来做其他的工作。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有