Создание синонимов между двумя таблицами в разных базах данных Informix

#informix

Вопрос:

У меня есть база gcd001 данных, содержащая несколько таблиц tab1 tab2 , tab3 содержащих данные, и вторая база dde002 данных, содержащая те же таблицы tab1 tab2 , tab3 но без данных.

Я пытаюсь создать скрипт, который создаст синонимы между таблицами этих двух баз данных. Я попробовал что-то вроде:

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

dtabase_with_data=$1
dtabase_no_data=$2
Table=$3

dbaccess $1 CREATE SYNONYM $1 FOR $2:$3;

done
 

но это не сработало, и я действительно не знаю, как это сделать.
Вы можете помочь?

Ответ №1:

Команда DB-Access не интерпретирует аргументы командной строки подобным образом. Его схема использования такова:

 dbaccess [-|database] [-|script]
 

Он добавит .sql расширение в script аргумент, если вы его не укажете (поэтому он выполняет только .sql файлы). Без опции сценария он становится интерактивным, если выбрать именованную базу данных. Без именованной базы данных она также становится интерактивной, без предварительного выбора базы данных. Тире для имени сценария означает «чтение стандартного ввода». Тире для имени базы данных означает «не выбирайте базу данных заранее»; предположительно сценарий выберет или создаст саму базу данных.

Вы, вероятно, захотите использовать:

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

dbaccess $2 - <<EOF

CREATE SYNONYM $3 FOR $1:$3;

EOF
 

Это подключается к «базе данных без данных» ( $2 ) и создает синоним с тем же именем, что и таблица ( $3 ), ссылающаяся на эту таблицу в «базе данных с данными» ( $1 ). Вы могли бы использовать переменные, которые вы установили, но тоже не использовали.

Обратите внимание, что таблицы tab1 .. tab3 не могут существовать в «базе данных без данных» до создания синонимов. Или вам нужно использовать альтернативное имя для синонимов, например syn_tab1 , .. syn_tab3 (но тогда ваш сценарий должен принимать аргументы для существующего имени таблицы и создаваемого синонима.

Комментарии:

1. Спасибо, Джонатан, я действительно новичок в Informix, и ваши ответы каждый раз многому меня учат.