我有一些包含数千条 INSERT 语句的 sql 文件。执行这些脚本时的问题是其中一些违反了唯一性约束。
我最初做了这样的事情:
BEGIN
INSERT INTO .....;
INSERT INTO .....;
...
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
null;
END;
/
EXIT;
但是,似乎发生异常的第一个实例将导致整个块结束,因此其余语句不会执行。
由于我使用的 Oracle 版本不是 11,所以我不能使用 nice CONTINUE 命令。所以我正在考虑为每个INSERT INTO 语句做这样的事情:
BEGIN
INSERT INTO ....;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
null;
END;
/
...
如何使用 sed 读取 sql 文件中的每一行,扫描“INSERT INTO”字样,如果存在,然后在 INSERT INTO 行之间附加 BEGIN 和 EXCEPTION 行?原因是,有时一行只是一个注释,我不想附加到它上面。