Question: How do I delete the output for one big table inside a mysqldump with lots of tables in it?

I have a dump of a database that is 6 GB large, but 90% of it is only one logging-table "cache\_entries", that I don’t need anymore inside my backup.

How can I easily remove that bit inside the dump, that describes the large logging-table?

I found this:
 <http://gtowey.blogspot.de/2009/11/restore-single-table-from-mysqldump.html>

Example:

```
grep -n 'Table structure' dump.sql

```

and then for example:

```
sed -n '40,61 p' dump.sql > t2.sql

```

But how can I change that for my needs?

Answer: 
I found this bash script, that splits a dump of one database into separate filed for each table, using `csplit` (that splits a file into sections determined by context lines):

```
#!/bin/bash

####
# Split MySQL dump SQL file into one file per table
# based on http://blog.tty.nl/2011/12/28/splitting-a-database-dump
####

if [ $# -ne 1 ] ; then
  echo "USAGE $0 DUMP_FILE"
fi

csplit -s -ftable $1 "/-- Table structure for table/" {*}
mv table00 head

for FILE in `ls -1 table*`; do
      NAME=`head -n1 $FILE | cut -d$'\x60' -f2`
      cat head $FILE > "$NAME.sql"
done

rm head table*

```

Source: [gist.github.com/1608062](https://gist.github.com/jasny/1608062) 

and a bit enhanced:
[How do I split the output from mysqldump into smaller files?](https://stackoverflow.com/questions/132902/how-do-i-split-the-output-from-mysqldump-into-smaller-files/9949414#9949414)

once, you have separate files for each table, you can delete the unwanted tables and glue them together if needed with 

`cat table* >glued_sqldump.sql`
you need to find the create table statement of your table, and find the next create table statement. say they are n1 and n2.

then you can just delete them with sed as above. sed 'n1,n2d' dump.sql > new.sql

you can just grep create table and note the line numbers for your prework.

here is a demo.

```
ubuntu@ubuntu:~$ grep -n [34] a.txt
3:3
4:4
ubuntu@ubuntu:~$ cat a.txt
1
2
3
4
5
6
ubuntu@ubuntu:~$ grep [34] a.txt
3
4
ubuntu@ubuntu:~$ sed '3,4d' a.txt > b.txt
ubuntu@ubuntu:~$ cat b.txt
1
2
5
6
ubuntu@ubuntu:~$ 

```