出于迁移目的,我需要在.sql文件中执行脚本(Informix代码)。问题是,我想从一个函数中加载它以能够使用异常,因此能够在发生错误的情况下进行回滚。
所以,这是代码(仍在试验中):
UIView
那是因为我们显然无法在函数内部执行load命令。所以我正在尝试执行它。但显然我做错了... 这里的目标是在文件上执行脚本(不是shell命令脚本!它是Informix脚本,例如创建,加载,卸载,删除...)。我愿意采取其他方式。
我对Informix还是比较陌生,所以我敢肯定还有很多我不知道的事情。
答案 0 :(得分:0)
如上所述,LOAD命令不是Informix服务器可识别的命令。客户端产品通过识别语法并读取文件并执行适当的SQL语句来模拟SQL语句。在服务器中执行的功能中更改(尝试)执行它的方式无济于事。
使用shell脚本可能会有所帮助。
如果要将现有的Informix数据库迁移到新位置(计算机,Informix版本),那么使用DB-export和DB-Import可能是一个好方法。
DB-Access命令是从Shell脚本执行脚本的“标准”方式。您需要确保将DBACCNOIGN
环境变量设置为1
。然后,如果在LOAD期间出错,则该操作将停止并回滚事务。还有一个DB-Load命令,但是回滚DDL语句会比较困难,因为它不处理那些。
或者,您可能会发现我的SQLCMD * 程序很有用-尽管它也不是完美的。但是,与DB-Access不同,它允许您控制哪些语句可以生成被忽略而不会被忽略的错误({continue [on|off|push|pop];
前后分别为)。
经过精心包装,您可以使用它来创建迁移,假设DB-Export和DB-Import不会自动为您完成工作。
* 您可能必须订阅IIUG才能获得此权限。注册并不繁琐,电子邮件负载也不是什么。