mysql com table dump,如何从mysqldump中删除表

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?

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?

解决方案

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*

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值