2009-09-23 150 views
13

我有一些SQL腳本,我試圖自動化。在過去,我使用了SQL * Plus,並通過bash腳本手動調用了sqlplus二進制文件。如何從bash腳本中執行SQL?

但是,我想弄清楚是否有辦法連接到數據庫,並從bash腳本內調用腳本...以便我可以插入date並使查詢運行相對於過去的某些天數。

回答

19

我有些困惑。你應該可以在bash腳本中調用sqlplus。這可能是你與你的第一條語句

請嘗試執行你的bash腳本中的以下在做什麼:

#!/bin/bash   
echo Start Executing SQL commands 
sqlplus <user>/<password> @file-with-sql-1.sql 
sqlplus <user>/<password> @file-with-sql-2.sql 

如果您希望能夠將數據傳遞到您的腳本,你可以通過的SQLPlus做傳遞參數到腳本:中文件與-SQL 1.SQL

select * from users where username='&1'; 

然後CH

內容安格在bash腳本sqlplus中傳遞價值

#!/bin/bash 

MY_USER=bob 
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER 
-4

由於猛砸沒有內置在SQL數據庫連接調用......你需要使用某種第三方工具。

+6

的sqlplus _is_說,「第三方工具」 – michael 2013-08-12 04:56:04

-3

這裏是bash的運行MySQL查詢殼

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]" 
+3

op爲使用Oracle。 – 2009-09-23 18:52:46

+0

這不是oracle。 – 2017-07-11 07:33:28

0

也許你可以管SQL查詢到sqlplus中的一個簡單的方法。它的工作原理爲MySQL:

echo "SELECT * FROM table" | mysql --user=username database 
8

您還可以使用「立即文檔」做同樣的事情:

VARIABLE=SOMEVALUE 

sqlplus connectioninfo << HERE 
start file1.sql 
start file2.sql $VARIABLE 
quit 
HERE