2007年12月29日

[pgsql-jp: 39047] Re:ログからのSQL文の抽出

鈴木です。

At Sat, 29 Dec 2007 14:30:06 +0900,
utsumi wrote:
>
> <2007-12-22 20:14:25 >LOG: statement: insert into ....
> values(.....
> というように複数行にまたがっているsqlは当然先頭行しか抽出できません。

> この場合どうやって複数行を抽出したらよいでしょうか?

複数行になっている部分を単一行に戻すのがスジかなと思います。

ということで、「先頭に空白文字が入った行は前の行の続きである」と見なし、
それを「空白文字1つ」へ置換してしまえば良いのではないかと。

例えばこんな感じのスクリプトで。
------------------------------------------------------------------------
#!/usr/bin/perl

my $log = '';
while(<>) {
$log .= $_;
}
$log =~ s/\n\s+/ /gm;
print $log;
------------------------------------------------------------------------
# メモリ食いな点は無視の方向でw


■入力
------------------------------------------------------------------------
<hoge1> aaaa
bbb
ccc
<hoge2> xxxx
yyyy
------------------------------------------------------------------------

■出力
------------------------------------------------------------------------
<hoge1> aaaa bbb ccc
<hoge2> xxxx yyyy
------------------------------------------------------------------------

;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki@xxxxx>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
;; Tel 03-5919-0041 Fax 03-5919-0042

投稿者 xml-rpc : 2007年12月29日 17:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/68149
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。