Bash:如何在5.4G SQL转储中轻松编辑一行

Sco*_*ott 6 mysql bash

我们遇到的问题是我们需要处理恢复丢失的数据(在主 - 主复制设置上不正确地使用maatkit),而我正在尝试导入数据库的旧转储.问题是,在文件的顶部,它显式指定了数据库(mysqldump是使用--all-databases选项运行的),我需要将该数据库更改为其他内容,以便我可以在其中另外使用比较.该行写道:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dms` /*40100 DEFAULT CHARACTER SET latin1 */
Run Code Online (Sandbox Code Playgroud)

由于转储的大小,我在vi中打开文件是不成功的,并且由于它将如何逐行读取任何模式匹配而使用sed有点犹豫.将sql转储中的上述行更改为最简单,最有效的方法是什么?

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dms_old` /*40100 DEFAULT CHARACTER SET latin1 */
Run Code Online (Sandbox Code Playgroud)

或者只是使用一些mysql黑魔法将其导入数据库dms_old

nin*_*alj 4

sed应该没有问题。做就是了:

`sed '/CREATE DATABASE/s/dms/dms_old/'`
Run Code Online (Sandbox Code Playgroud)

并进行适当的重定向。