0

私は完全な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;
/

つまり、InsertintoStatementの前後にコードを配置する必要があります。

誰かが私を助けることができますか?私は経済計算などで助けになるかもしれませんが、このタスクは私にとってかなり難しいです:/

大いに感謝する :-)

4

2 に答える 2

0

これが使用している特定の 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')テーブル名なのか、値の 1 つなのか、リテラル文字列 'XXX' なのかはわかりません。正規表現文字列に別のキャプチャ グループを追加して、リテラル文字列が

Python プラグインを使用せずに、同様の検索/置換パターンを使用することもできます。Notepad++ は、正規表現の検索と置換をサポートしています。

編集:これは、正規表現モードでの Notepad++ の組み込み検索と置換で機能するはずです。

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
于 2013-02-26T18:20:40.027 に答える
0

検索と置換の Notepad++ ベースのソリューションを探している場合は、次の方法を試すことができます。テーブル名(挿入ステートメントの最初のxxx)を表示するためのものであると
想定しています。dbms_output.PUT_LINE('XXX')

[検索と置換] でチェックを外し、チェックを外し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;

幸運を

于 2013-02-26T20:09:19.247 に答える