我应该在序言中说我是一个完整的Python新手,但我需要完成一项任务:(
我已经安装了python脚本插件并阅读它是如何工作的。但是我有很多问题要理解我对程序/脚本的要求。
我有一个文本文件,我用notepad ++打开,其中包含许多语句,如:
Insert into XXX (XXX,XXX,XXX) Values (XXX, XXX, XXX);
我需要使用notepad ++ python脚本将这些语句转换为
BEGIN
Insert into XXX (XXX,XXX,XXX) Values (XXX, XXX, XXX);
EXCEPTION
WHEN dup_val_on_index
THEN dbms_output.PUT_LINE('XXX');
END;
/
这意味着我必须将代码放在Insert into Statement之前和之后。
有人能帮助我吗?我可能会通过经济计算或类似的东西来帮助,但这项任务对我来说非常困难:/
非常感谢: - )
答案 0 :(得分:0)
假设this是您正在使用的特定python插件,您可以使用正则表达式替换:
editor.pyreplace(r"^([Ii]nsert into.*? [Vv]alues.*?\;)", r"BEGIN\r\n\1\r\nEXCEPTION\r\nWHEN dup_val_on_index\r\nTHEN dbms_output.PUT_LINE('XXX');\r\nEND;/\r\n")
注意:我不确定'XXX'
中的dbms_output.PUT_LINE('XXX')
字符串是应该是表名还是其中一个值或文字字符串'XXX' 。您可以将另一个捕获组添加到正则表达式字符串,以捕获文字字符串
您也可以在没有python插件的情况下使用类似的搜索/替换模式。 Notepad ++支持正则表达式搜索和替换。
编辑:这应该适用于Notepad ++的内置搜索&在Regex模式下替换:
Find what: ([Ii]nsert into.*? [Vv]alues.*?\;)
Replace with: BEGIN\r\n\1\r\nEXCEPTION\r\nWHEN dup_val_on_index\r\nTHEN dbms_output.PUT_LINE\('XXX'\);\r\nEND;/\r\n
答案 1 :(得分:0)
如果您正在寻找基于Notepad ++的查找和替换解决方案,您可以尝试以下方法
我假设dbms_output.PUT_LINE('XXX')
用于显示表名(插入语句中的第一个xxx)。
在Find&替换取消选中Match case
并选择正则表达式并取消选中match Newline
(Notepad ++版本> 6.0)
查找
Insert\s*into\s*([a-z0-9]*)(\s*)(.*)(\s*)values(\s*)(.*);
替换
BEGIN\r\n\Insert into \1 \3 values \6;\r\nEXCEPTION\r\nWHEN dup_val_on_index\r\nTHEN dbms_output.PUT_LINE\(\'\1\'\);\r\nEND;
祝你好运