亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4304 | 回復(fù): 2
打印 上一主題 下一主題

如何在shell中運行sql語句? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-08-01 14:20 |只看該作者 |倒序瀏覽
我的數(shù)據(jù)庫已經(jīng)建好,在sqlplus里可以訪問到局域網(wǎng)中一臺windows的數(shù)據(jù)庫。

我現(xiàn)在想實現(xiàn)在的是把一段sql語句存為一個shell文件。在執(zhí)行shell文件的時候就可以打開sqlplus,并運行里面的sql語句。

如: vi sqltest.sh

$ sqlplus test/test@testDB
$ select * from tab;

但運行結(jié)果只是連到數(shù)據(jù)庫并出現(xiàn)sql>;提示符,第二行的sql語句并不能執(zhí)行。請教教我該怎么寫呢?

論壇徽章:
0
2 [報告]
發(fā)表于 2005-08-01 14:42 |只看該作者

如何在shell中運行sql語句?

經(jīng)過shell壇子里lovelyarry的幫助已經(jīng)解決,F(xiàn)把成功代碼發(fā)出來!希望有同樣問題的朋友能節(jié)約一丁點時間,也算是對lovelyarry的報答吧。


sqlplus test/test@testDB<<!
select * from tab;
exit
!

求職 : 數(shù)據(jù)庫管理員
論壇徽章:
0
3 [報告]
發(fā)表于 2005-08-02 09:31 |只看該作者

如何在shell中運行sql語句?

還有在
http://www.zdnet.com.cn/developer/code/story/0,3800066897,39225241,00.htm 上學到的方法
Example:
alias sp=sp.sh
sp "connect test/test"
sp "select table_name from user_tables"
sp "select  sysdate from dual"
sp "exit"


spd.pl

  1. #!/usr/bin/perl -w
  2. # spd.pl - the SQL*Plus daemon server
  3. use strict;
  4. use Expect;
  5. use Socket;

  6. # set up expect
  7. # -- timeout after about 10 minutes
  8. my $timeout = 600;
  9. # -- scan for the SQL*Plus prompt
  10. my $prompt = 'SQL>;';
  11. my $exp = new Expect();
  12. $exp->;raw_pty(1);
  13. $exp->;log_stdout(0);
  14. $exp->;spawn('sqlplus','/nolog') || die "unable to spawn sqlplus: $!";
  15. $exp->;expect($timeout,'-ex',$prompt) || die $exp->;error();
  16. print $exp "set sqlprompt $prompt;\n";
  17. $exp->;expect($timeout,'-ex',$prompt) || die $exp->;error();
  18. $exp->;clear_accum();

  19. my $name = "/tmp/sp_$ENV{USER}";
  20. unlink($name);
  21. socket(S,PF_UNIX,SOCK_STREAM,0) || die "socket: $!";
  22. bind(S,sockaddr_un($name)) || die "bind: $!";
  23. listen(S,SOMAXCONN) || die "listen: $!";

  24. while(accept(C,S))
  25. {
  26.     # single threaded to avoid confusion
  27.     my $cmd = <C>;;
  28.     $cmd =~ s/[\r\n]*$//g;
  29.     print $exp $cmd,"\n";
  30.     if ($cmd =~ /^exit;$/mi)
  31.     {
  32.         print C "exit.\n";
  33.         close C;
  34.         last;
  35.     }
  36.     print C $cmd."\n" ;
  37.     $exp->;expect($timeout,$prompt) || die $exp->;error() ;
  38.     print C $exp->;before();
  39.     close C;
  40. }

  41. $exp->;soft_close();
  42. close S;
  43. unlink($name);
  44. exit;

復(fù)制代碼


spc.pl

  1. #!/usr/bin/perl -w
  2. # spc.pl
  3. use Socket;
  4. use strict;
  5. my $cmd = join(' ',@ARGV);
  6. my $name = "/tmp/sp_$ENV{USER}";
  7. my $proto = getprotobyname('udp');

  8. $cmd=$cmd.";" if ( not $cmd =~ /.+;$/)  ;


  9. socket(S,PF_UNIX,SOCK_STREAM,0) or die "socket: $!";
  10. select S; $| = 1; select STDOUT;
  11. connect(S,sockaddr_un($name)) or die "connect: $!";

  12. print S $cmd,"\n";
  13. print while (<S>;);
  14. close(S);
  15. exit;

復(fù)制代碼


sp.sh

  1. #!/bin/sh

  2. MF=$0;

  3. if [ -h $0 ] ; then
  4.         MFILE=$(ls -l $0 );
  5.         MF=${MFILE#*->;};
  6. fi

  7. MWD=$( dirname $MF );

  8. f=/tmp/sp_$USER

  9. if [ ! -e $f ]; then
  10.     perl $MWD/spd.pl &
  11.     sleep 1 ;
  12. fi
  13. perl $MWD/spc.pl "$*"

復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP