使用notepad ++ python脚本插件在特定位置插入文本

时间:2013-02-26 17:52:07

标签: python sql insert notepad++

我应该在序言中说我是一个完整的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之前和之后。

有人能帮助我吗?我可能会通过经济计算或类似的东西来帮助,但这项任务对我来说非常困难:/

非常感谢: - )

2 个答案:

答案 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;
祝你好运