当前位置: 首页 > Linux

使用sed命令删除sql文件中的注释信息

时间:2023-04-06 05:33:00 Linux

当我们需要迁移数据库,数据从低版本的mysql迁移到高版本的mysql时,使用mysqldump命令导出数据库,而导出的SQL会有很多注释信息,如下:/*!40101SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT*/;/*!40101SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS*/;/*!40101SET@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION*/;*!40101设置名称utf8*/;/*!40103SET@OLD_TIME_ZONE=@@TIME_ZONE*/;/*!40103SETTIME_ZONE='+00:00'*/;/*!40014SET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,UNIQUE_CHECKS=0*/;/*!40014SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0*/;/*!40101SET@OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='NO_AUTO_VALUE_ON/1;1/ZERO'*4@OLD_SQL_NOTES=@@SQL_NOTES,SQL_NOTES=0*/;而这些注释信息其实是有意义的,/*!后面的数字其实就是MYSQL的版本号信息,也就是说当版本号高于或者等于注释中的版本号设置的时候,就会执行里面的SET命令。在这种情况下,有时执行高版本时会报错。这时候可以用sed命令去掉SQL中的注释行,再执行就没有问题了。例如SQL文件为:test.sql去掉注释行的命令如下:sed-i'/^\//d'test.sql去掉,然后用source或者mysql命令导入sql