【发布时间】:2011-10-04 12:39:18
【问题描述】:
我有一个 Perl 脚本,它需要调用 IBM db2 来处理一些命令。问题是每次调用都会破坏 db2 连接
这不起作用:
$> db2 connect to foo
$> perl -e 'print `db2 list tables for schema bar|some_filter`;'
也不是这样:
$> perl -e 'print `db2 connect to foo`; print `db2 list tables for schema bar|some_filter`;'
也不是这样:
$> perl -e 'print `db2 connect to foo && db2 list tables for schema bar|some_filter`;'
在每种情况下,在执行第二个命令时连接都会丢失。
这行得通:
#!/usr/bin/perl
print `db2 connect to foo`;
print `db2 list tables for schema bar`;
但这不是:
#!/usr/bin/perl
print `db2 connect to foo`;
print `db2 "select count * from bar"`;
一种解决方法是从 Perl 生成一个 bash 脚本并执行它,但直接执行它会更好。有什么办法吗?
【问题讨论】:
-
在您的最后一个示例中,这两个命令在同一个子shell 中运行,并且必须具有相同的环境。
db2是别名而不是可执行程序的名称吗? -
你的第二个例子对我有用。我在Linux和AIX下试过了。但是,我已经加载了安装在我的系统上的 db2profile shell 脚本。你做到了吗?
-
我把管道遗漏到了
some_filter,这打破了它。已编辑。 -
为什么不使用DBI 和 DBD::DB2 模块?
标签: perl bash db2 environment-variables