As per Robin, deleting is much easier than scripting selective inserts
If you have RI in place and don't have cascading delete, you can work backwards easily with nested criteria
Start off this way ...
1
delete from table1 where table1PK IN
(somecriteria for table1 deletion)
2
delete from table2 where table2PK in
(select table2PK from table2 where
table1PK in (somecriteria for table1 deletion) -- same as above
)
-- etc ... continue nesting down the tree
but then when you come to run the deletion obviously you need to reverse the order of deletion to
N
..
2
..
1
This could still be a lot of work for 700 tables, but usually most data is in a few tables - you just need to focus on the large ones?
HTH