简单介绍下实验环境,两台机器,分别是64位AIX和32位Linux,分别装着64位DB2V9.5FP1和32位DB2V9.1FP8。两边都各有一个db2inst1实例,实例下各建有一个TESTDB,数据库中各有一个表T1,只有一列c1,int类型。
先在AIX上写ksh脚本
#!/usr/bin/ksh
su - db2inst1 -c "db2 connect to testdb"
su - db2inst1 -c "db2 select c1 from t1"
运行该脚本,可以成功打印出select结果
再到Linux上写bash脚本
#!/bin/bash
su - db2inst1 -c "db2 connect to TESTDB"
su - db2inst1 -c "db2 select c1 from t1"
运行该脚本,却报连接不存在
[root@test01 /]# ./test.sh
Database Connection Information
Database server = DB2/LINUX 9.1.8
SQL authorization ID = DB2INST1
Local database alias = TESTDB
SQL1024N A database connection does not exist. SQLSTATE=08003
利用公司的资源,连到64位AIX版本的DB2V8.1上和64位Linux版本的DB2V9.1上看过了,但凡是ksh都是OK的,但凡是bash都是报连接不存在。个人认为比较大的可能是ksh和bash的语法区别。不知道各位有谁在Linux上写过连接DB2的脚本,如果要在Linux上使用bash写脚本连接数据库,shell该如何写呢?
收起