Как уже отмечалось, команда LOAD не является командой, распознаваемой сервером Informix.Клиентские продукты эмулируют оператор SQL, распознавая синтаксис, читая файл и выполняя соответствующие операторы SQL.Изменение того, как вы (пытаетесь) выполнить его в функции, выполняющейся на сервере, не поможет.
Вместо этого может помочь использование сценария оболочки.
Если вы переносите существующую базу данных Informixв новое место (компьютер, версия Informix), тогда использование DB-export и DB-Import может быть хорошим способом.
Команда DB-Access - это «стандартный» способ выполнения сценариев изскрипт оболочки.Вам необходимо убедиться, что для переменной среды DBACCNOIGN
установлено значение 1
.Затем он остановится, если во время ЗАГРУЗКИ возникнет ошибка, и откат транзакции.Также есть команда DB-Load, но будет сложнее откатывать операторы DDL, поскольку она не обрабатывает их.
В качестве альтернативы вы можете найти мой SQLCMD * программа полезна, хотя и не идеальна.Однако, в отличие от DB-Access, он позволяет вам контролировать, какие операторы могут генерировать ошибки, которые игнорируются, а какие нет (continue [on|off|push|pop];
до и после, в зависимости от ситуации).
С помощью аккуратной упаковки вы можете использовать ее для создания миграции, предполагая, что DB-Export и DB-Import не выполнят эту работу автоматически.
* Возможно, вам придется подписаться на IIUG, чтобы получить на это.Регистрация не обременительна, как и загрузка электронной почты.