Goal:
Parse the SQL statement to get the SQL type from master log -- such as SELECT, UPDATE, COPY, DELETE, etc.You need to firstly create an external table(named "masterlog_ext") based on master logs, please refer to here.
Solution:
create temp table tmp_logminer_openkb
as
select logtime,loguser,logdatabase,logmessage,
upper(
substring(
regexp_replace(
substring(
regexp_replace(
regexp_replace(
regexp_replace(
regexp_replace(logmessage,E'--[^\n]*(\\n|$)','','g') --remove all the comment between ""--"" and ""new line""
, E'\\n\\s*\\n','','g') --remove ALL-SPACE/empty line
, E'\\s+',' ','g') --remove junk spaces
,'BEGIN TRANSACTION;','','i') --remove ""begin transaction;""
, 1, 50 ) --get the first 50 characters
, E'((statement:)|(execute.*:))((\\n)|(\\s))*', '' ,'i' ) --remove strings before "":""
from E'(^\\w+)(\\s|\\n)+') --get the first characters as data type
) --change it to upper case
sql_type from masterlog_ext
where logmessage !~ 'duration:'
and logseverity='LOG'
and (logmessage like 'execute %' or
logmessage like 'statement:%')
and
regexp_replace(logmessage,E'((statement:)|(execute.*:))((\\n)|(\\s))*', '' ,'i' )
!~* '^(begin|commit|end transaction|rollback|start transaction|;)'
and
regexp_replace(logmessage,E'((statement:)|(execute.*:))((\\n)|(\\s))*', '' ,'i' ) <> ''
and logdatabase <> 'gpperfmon'
distributed by (logtime) ;
4CDAC4D7
ReplyDeleteBurdur
Konya
Batman
Gümüşhane
Kırşehir
Amasya
Elazığ
Kilis
Yalova
13B1F86B
ReplyDeleteYakuplu
Bitez
Yeşilyurt
Gürcistan
Kozan
Kızıltepe
Side
Oğuzeli
Gemlik
FBE6EFCE
ReplyDeleteGazipaşa
Turgutreis
Gölhisar
Yüksekova
Sarıçam
Selçuk
Akçay
Seferihisar
Kepez
684C98B9
ReplyDeleteOrtaköy
Çatalca
Yüreğir
Fındıklı
Körfez
Oğuzeli
Gölcük
Karşıyaka
Kozan
EFE503D7
ReplyDeleteÖlüdeniz
Narlıdere
Şehitkamil
Bucak
Avşa
Cebeci
Kilyos
Kulu
Tavşanlı