如何在bash脚本中串行运行sql脚本?

时间:2014-09-03 06:03:41

标签: linux bash shell db2

我需要运行2个DB2 sql脚本。我试图将它们都放在bash脚本中并执行它们。

这是script.sh:

#!/bin/bash
db2 -tf firstscript.sql;
db2 -tf secondscript.sql;

当我运行它时,我收到以下错误:

  

DB21034E该命令作为SQL语句处理,因为它是   不是有效的命令行处理器命令。在SQL处理期间   返回:SQL1024N数据库连接不存在。   SQLSTATE = 08003

但我已确保数据库连接已存在。

我认为sql脚本中的命令不是按顺序执行的。 因为当我单独运行每个命令时,没有错误。 此外,当我同时运行两个内联命令,即db2 -tf firstscript.sql;db2 -tf firstscript.sql时,即使这样代码也可以运行。

我认为它可能与#!/bin/bash有关,所以我从script.sh文件中删除它然后执行它。即使这样,它也会返回相同的错误。

可能出现的问题及其解决方案是什么?

1 个答案:

答案 0 :(得分:0)

当您建立连接时,它将保留在您当前的环境中。当你调用一个bash脚本时,它会创建一个子shell,并且没有任何连接。

为了解决这个问题,您需要通过获取脚本来重用当前环境(如@ jm666所说):

. ./script.sh

确保在脚本名称前面有一个空格后跟一个空格。

db2 connect to sample
. ./script.sh

仅供参考,脚本中的命令将按照您的定义顺序执行。