2012-05-30 16 views
0

我正在嘗試編寫一個腳本來執行單個腳本下面的步驟。如何使用unix登錄並執行數據庫中的命令?

實施例:

bash-3.00$ isql -Ufw -Pframesa -Dcsmain -w2000  
1> select * from UserLogin where UserName ='EPRTUBD'  
2> go  
UserName    Password                                                              ExpiryDate     ProfileID CCRefillSum    LastCCRefillDate   RBRefillSum    LastRBRefillDate   DBRefillSum    LastDBRefillDate   LockStatus FailedLoginCount 
-------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------- ----------- ------------------------ -------------------------- ------------------------ -------------------------- ------------------------ -------------------------- ---------- ---------------- 
EPRTUBD    $1$HN1DOjM6$R9.niqQzUQ/2H4663nRoQ/                                                          Jun 25 2012 8:04AM   147      NULL      NULL      NULL      NULL      NULL      NULL N       0 

(1 row affected) 
1> exit 

bash-3.00$ 

用戶名可以是n數。我想給一個包含所有用戶名的輸入文件。任何人都可以引導我嗎?如何在此命令中分配用戶名,並在登錄到數據庫後執行。

+0

http://dbi.perl.org/ http://p3rl.org/DBI – daxim

回答

1

我沒有辦法測試這個,但常見的解決方案是使用shell「here-docs」來附加std-in以調用isql。類似以下內容:

#!/bin/bash 

isql -Ufw -Pframesa -Dcsmain -w2000 <<-EOS 
    select * from UserLogin where UserName ='EPRTUBD'  
    go 
EOS 

請注意<<-EOS中的' - '。這是一個允許縮進here-doc的功能,並允許關閉的EOS縮進。 EOS 必須使用製表符字符縮進。如果你不能使用製表符字符,刪除' - '並確保你的EOS是第一個字符在單獨的行(沒有尾隨的空白區域!;-)

此外,EOS可以是任何文本,我使用EOS作爲腳本結束。

我希望這會有所幫助。

+0

嗨,謝謝你現在的反應,它的工作原理。我使用了EOB(塊結束)而不是EOS。再次非常感謝 – gyrous

相關問題