#! perl -slw use strict; $/ = ";\n"; ## Paragraph mode Blocks that end with ';' ## Assumes there are no semicolons at the end of lines in the comments +. while( <DATA> ) { m[ .* ## skip stuff before the INSERT ## Capture the dest table name and the entire dest fields list INSERT \s+ INTO \s+ ( \S+ ) \s* \( \s* ( [^)]+ ) \s* \) \s* ## Capture the entire src fields list & source table name SELECT \s+ ( .+? ) \s+ FROM \s+ ( .+? ) \s* ; ]sx or warn "'$_' did not match; ignored" and next; my( $dTable, $dFields, $sFields, $sTable ) = ( $1, $2, $3, $4 ); my @dFields = split '\s*,\s*', $dFields; my @sFields = split '\s*,\s*', $sFields; printf "%-60s %-60s\n", $dTable . '.' . $dFields[ $_ ], $sTable . '.' . $sFields[ $_ ] for 0.. $#dFields; print "\n"; }
Output from your example input:
C:\test>581226.pl nokia_scp_address_camel_1_raw.nc_id nokia_scp +_address_camel_raw.nc_id nokia_scp_address_camel_1_raw.scp_address_id nokia_scp +_address_camel_raw.scp_address_id nokia_scp_address_camel_1_raw.day nokia_scp +_address_camel_raw.day nokia_scp_address_camel_1_raw.sgsncamelactivepdpcontexts nokia_scp +_address_camel_raw.sgsncamelactivepdpcontexts nokia_scp_address_camel_1_raw.sgsncamelactivesmses nokia_scp +_address_camel_raw.sgsncamelactivesmses nokia_scp_address_camel_1_raw.sgsncamelcapdialforpdpcontexts nokia_scp +_address_camel_raw.sgsncamelcapdialforpdpcontexts nokia_scp_address_camel_1_raw.sgsncamelcapdialoguesforsmses nokia_scp +_address_camel_raw.sgsncamelcapdialoguesforsmses nokia_scp_address_camel_1_raw.sgsncamelcapfailwithpdpcontext nokia_scp +_address_camel_raw.sgsncamelcapfailwithpdpcontext
In reply to Re: need a intelligence way of parsing the file
by BrowserUk
in thread need a intelligence way of parsing the file
by greatshots
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |