在不同数据库 Informix 中的两个表之间创建同义词

Create synonyms between two tables in different databases Informix

我的数据库 gcd001 包含多个包含数据的表 tab1tab2tab3,第二个数据库 dde002 包含相同的表 tab1tab2tab3,但没有数据。

我正在尝试创建一个脚本,用于在这两个数据库的表之间创建同义词。我试过类似的东西:

# !/bin/sh
# USAGE : cresyn.sh {dtabase_with_data} {dtabase_no_data} {Table}

dtabase_with_data=
dtabase_no_data=
Table=

dbaccess  CREATE SYNONYM  FOR :;

done

但是没有用,我真的不知道该怎么做。 你能帮忙吗?

DB-Access 命令不会像那样解释命令行参数。它的使用模式是:

dbaccess [-|database] [-|script]

如果您不指定它,它会将 .sql 扩展名添加到 script 参数(因此它只执行 .sql 个文件)。如果没有脚本选项,它将与 select 指定的数据库进行交互。没有指定的数据库,它也可以进行交互,而无需预先 select 数据库。脚本名称的破折号表示“读取标准输入”。数据库名称的破折号表示“不要预先 select 数据库”;大概脚本将 select 或创建数据库本身。

您可能想使用:

if [ $# != 3 ]
then
    echo "Incorrect arguments.  Usage: [=11=] db_with db_without tablename" >&2
    exit 1
fi

dbaccess  - <<EOF

CREATE SYNONYM  FOR :;

EOF

这将连接到 'database without data' (</code>) 并创建一个与引用 table 的 table (<code>) 同名的同义词在 'database with data'(</code>)中。您可以使用您设置但未使用的变量。</p> <p>请注意,在您创建同义词之前,tables <code>tab1 .. tab3 不能存在于 'database without data' 中。或者您必须为同义词使用替代名称,例如 syn_tab1, .. syn_tab3(但是您的脚本需要为现有的 table 名称和同义词提供参数已创建。