1
我有简单的bash脚本,它使用isql查询一个Firebird数据库,并将结果传递给连接到另一个数据库的isql。第一个结果集的格式为UPDATE ...或INSERT ...,第二个isql执行这些结果集。 到目前为止,数据一直是数字;现在我必须处理可能包含嵌入式报价的名称。这会导致第二个isql的输入无效。 确保单引号(以名称而不是总结果集合)加倍的最简单方法是什么?firebird isql结果中的转义报价
UPDATE FOO SET NAME='O'CONNOR' WHERE ...;
应该是
UPDATE FOO SET NAME='O''CONNOR' WHERE ...;
bash的代码是
(isql -i update.sql server:db1; echo "COMMIT;") | egrep "^UPDATE|^COMMIT"|isql -e server2:db2
凡update.sql结果集是上面所示的更新命令。 不,我不担心小鲍比表:)
您有问题要问?你似乎明白该怎么做。 –
你可以包含你运行的命令吗?这将使它更容易看到发生了什么..是不是fb-isql? isql可能会与unixodbc软件包冲突。 – jcalfee314
我的问题是如何使更新语句#1看起来像#2时,管道到第二个isql。我无法弄清楚如何让第一个结果集转义嵌入式报价,或者如何让bash发现嵌入式报价必须在管道到isql之前转义。 –