2009-09-23 165 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