unix下数据库编程:利用数据库效用给UNIX命名管道来源: 发布时间:星期四, 2009年2月12日 浏览:44次 评论:0
大多数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 根据我测试压缩导出文件只是普通大小 8分的: 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 eger, owner varchar2(8), grpname varchar2(8), filesize eger, crdate date, filename varchar2(256) ); 为了检测输出可以使用SQL*装入控制文件: load data truncate o table lsout ( attrs position(01:10), links position(12:15), owner position(17:24), grpname position(26:34), filesize position(36:42), crdate position(44:55) DATE \"Mon DD HH24:MI\", filename position(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 o 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导航你可以利用它来做其他工作 1
相关文章读者评论发表评论 |
|