How do I delete a table from a mysqldump

后端 未结 3 825
无人共我
无人共我 2021-02-04 17:02

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 logg

3条回答
  •  我寻月下人不归
    2021-02-04 17:33

    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

    and a bit enhanced: How do I split the output from mysqldump into smaller files?

    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

提交回复
热议问题