ダンプ・ファイルからOracle挿入、更新(DML)問合せを抽出する方法は?

ダンプ・ファイルからOracle挿入、更新(DML)問合せを抽出する方法は?

例:

$cat data.txt

SCN           THREAD  OPERATION ID                                       OBJECT ID   OBJECT NAME                     REPLICATE  OPERATION       SQL
------------- ------- -------------------------------------------------- ----------- ------------------------------- ---------- --------------- -------------------------------------------------
959936598838  1       0x00df.80ae1336.0000:0001.001087a6.00074e62.0010   0           N/A                             NO         START           set transaction read write;
959936598838  1       0x00df.80ae1336.0000:0001.001087a6.00074e62.0010   8144610     HEARTBEAT                       YES        INSERT          insert into "SRS"."HEARTBEAT"("INST_NAME","CR_DATE") values ('LIVE LIVE-22.',TO_DATE('03/15/2019 23:00:05', 'MM/DD/YYYY HH24:MI:SS'));
959936598839  1       0x00df.80ae1337.0000:0001.001087a6.00074e63.0174   0           N/A                             NO         COMMIT          commit;

上記のファイルからシェルスクリプトを使用して値を含む挿入クエリを抽出できますか?

以下のように希望の出力が必要です。

「SRS」を挿入してください。「HEARTBEAT」(「INST_NAME」、「CR_DATE」)の値( 'LIVE LIVE-22.'、TO_DATE('03/15/2019 23:00:05'、 'MM/DD/YYYY HH24:見逃す '));

ベストアンサー1

最初の7列にスペースがないとします。

$ while read a b c d e f g query; do echo "${query}"; done < data.txt | grep -Ei "insert|update"
insert into "SRS"."HEARTBEAT"("INST_NAME","CR_DATE") values ('LIVE LIVE-22.',TO_DATE('03/15/2019 23:00:05', 'MM/DD/YYYY HH24:MI:SS'));


$ awk '/insert|update/{for(i=1;i<=7;i++){$i=""}print}' data.txt
       insert into "SRS"."HEARTBEAT"("INST_NAME","CR_DATE") values ('LIVE LIVE-22.',TO_DATE('03/15/2019 23:00:05', 'MM/DD/YYYY HH24:MI:SS'));

おすすめ記事