Hi Guys,
I wanted to create a insert statement from a file. The solution was given Durden_tyler and malcomex999. Malcomex gave the solution in awk which was not working as my OS is SunOS. The perl command was working but it is giving wrong insert statements for some of the records.
This is the thread i am talking about.
http://www.unix.com/shell-programming-scripting/118553-need-create-insert-query-file.html
The following is the perl command having problem.
perl -ne 'BEGIN {$q=chr(39)} chomp;
> if (/^$/){print $s,");\n"; $s=""}
> elsif (/\d{4}$/){$s="Insert into table values (".$q.$_.$q}
> else {@x=split/: /;
> if (/^(ACTION|DATABASE)/){$s .= ",".$x[1]}
> else {$s .= ",".$q.$x[1].$q}}
> END {print $s,");\n"}' pra.txt
This how it comes
d02 $ perl -ne 'BEGIN {$q=chr(39)} chomp;
> if (/^$/){print $s,");\n"; $s=""}
> elsif (/\d{4}$/){$s="Insert into table values (".$q.$_.$q}
> else {@x=split/: /;
> if (/^(ACTION|DATABASE)/){$s .= ",".$x[1]}
> else {$s .= ",".$q.$x[1].$q}}
> END {print $s,");\n"}' pra.txt
Insert into table values ('Thu Mar 16 16:14:41 2006','CONNECT','/','SYSDBA','oracle','pts/6','0');
Insert into table values ('Wed Mar 22 11:17:12 2006','CONNECT','/','SYSDBA','oracle','pts/6','0');
Insert into table values ('STATUS: 1031');
Insert into table values ('STATUS: 1017');
Insert into table values ('STATUS: 1031');
Insert into table values ('Tue Mar 28 12:39:44 2006','CONNECT','/','SYSDBA','oracle','pts/6','0');
Insert into table values ('Thu Mar 16 16:14:41 2006','CONNECT','/','SYSDBA','oracle','pts/6','0');
Insert into table values ('Wed Mar 22 11:17:12 2006','CONNECT','/','SYSDBA','oracle','pts/6','0');
Insert into table values ('STATUS: 1031');
Insert into table values ('STATUS: 1017');
Insert into table values ('STATUS: 1031');
Insert into table values ('STATUS: 1031');
Insert into table values ('STATUS: 1017');
Insert into table values ('STATUS: 1031');
The file is as shown below
d02 $ cat pra.txt
Thu Mar 16 16:14:41 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/6
STATUS: 0
Wed Mar 22 11:17:12 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/6
STATUS: 0
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1031
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: 'SYS'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1017
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1031
Tue Mar 28 12:39:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/6
STATUS: 0
Thu Mar 16 16:14:41 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/6
STATUS: 0
Wed Mar 22 11:17:12 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/6
STATUS: 0
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1031
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: 'SYS'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1017
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1031
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1031
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: 'SYS'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1017
Wed Mar 22 11:18:44 2006
ACTION : 'CONNECT'
DATABASE USER: '/'
PRIVILEGE : NONE
CLIENT USER: T5282TS
CLIENT TERMINAL: CITMD0204244304
STATUS: 1031
Thanks for your help in advance
Regards,
Magesh