I have sql file containing lot of queries on different database table. I have to filter specific table queries.
Let say i need all queries of test1,test2,test3 along with four lines above it and sql queries can be multi lines or in single line.
Input file contains.
set INSERT_ID=1;
set TIMESTAMP=20100808
# at 233
# sql.session.value
INSERT INTO test1 (
column1,
column2,
column3,
VALUES
(
column1value,
column2value,
column3value
)
set INSERT_ID=21;
set TIMESTAMP=20100809
# at 2221
# sql.session.value
INSERT INTO notrequired (
column1
VALUES
(
column1value
)
set INSERT_ID=2;
set TIMESTAMP=20100809
# at 233
# sql.session.value
INSERT INTO test3 column1,column2 VALUES (column1value,column2value)
set INSERT_ID=2;
set TIMESTAMP=20100809
# at 233
# sql.session.value
UPDATE test1
SET column1=value,
column2=value,
column3=value
WHERE column3=value;
set INSERT_ID=11;
set TIMESTAMP=20100808
# at 2343
# sql.session.value
INSERT INTO test2 (
column1,
column2
VALUES
(
column1value,
column2value
)
I need to get all test1 and test2 table queries along with four above lines. I tried following but didn't work. Only grep first line of table.
shell] cat inputfile.sql | grep -wB4 "INSERT INTO test1" > outputfile.sql
shell] cat inputfile.sql | grep -wB4 "UPDATE test1" >> outputfile.sql
shell] cat inputfile.sql | grep -wB4 "INSERT INTO test2" >> outputfile.sql
shell] cat inputfile.sql | grep -wB4 "INSERT INTO test3" >> outputfile.sql
Output file should be look likes this,
set INSERT_ID=1;
set TIMESTAMP=20100808
# at 233
# sql.session.value
INSERT INTO test1 (
column1,
column2,
column3,
VALUES
(
column1value,
column2value,
column3value
)
set INSERT_ID=2;
set TIMESTAMP=20100809
# at 233
# sql.session.value
INSERT INTO test3 column1,column2 VALUES (column1value,column2value)
set INSERT_ID=2;
set TIMESTAMP=20100809
# at 233
# sql.session.value
UPDATE test1
SET column1=value,
column2=value,
column3=value
WHERE column3=value;
set INSERT_ID=11;
set TIMESTAMP=20100808
# at 2343
# sql.session.value
INSERT INTO test2 (
column1,
column2
VALUES
(
column1value,
column2value
)
Any help highly appreciated.