我有一个巨大的mysqldump输出,想要排除特定表的插入。
该文件如下所示:
--
-- Dumping data for table `big_table`
--
INSERT INTO `big_table` ...
INSERT INTO `big_table` ...
--
-- Table structure for table `next_table`
--
如何删除介于“为表big_table转储数据”和下一个“表结构表”之间的插入文件太大而无法放入文本编辑器中。
答案 0 :(得分:12)
我忽略了当然所有插入都以表名开头的事实。所以我可以简单地使用
grep -v "INSERT INTO \`big_table\`" dump.sql > dump_stripped.sql
答案 1 :(得分:6)
使用sed
的一种解决方案。它会搜索文字-- Dumping data for table 'big_table'
和-- Table structure for table
之间的所有行。并评论那些不以--
开头的行。
假设内容为infile
:
1
2
3
4
--
-- Dumping data for table `big_table`
--
INSERT INTO `big_table` ...
INSERT INTO `big_table` ...
--
-- Table structure for table `next_table`
--
1
2
3
4
5
6
运行命令:
sed -e '
/-- Dumping data for table `big_table`/,/-- Table structure for table/ {
/^--/! s/^/--/
}
' infile
使用以下输出:
1
2
3
4
--
-- Dumping data for table `big_table`
--
--
--INSERT INTO `big_table` ...
--INSERT INTO `big_table` ...
--
--
--
-- Table structure for table `next_table`
--
1
2
3
4
5
6
答案 2 :(得分:0)
解决方法如何:
我希望这会有所帮助。