4

如何跳过 MySQL 转储中的版本检查注释。

/*!50003 ... */ ;

我基本上希望 mysqldump 假设版本是相同的,因此是兼容的。

我想要这个的原因是我可以转储我的数据库的结构,并提交,并将其与其他时间点和其他环境进行比较。

目前它还在条件版本检查注释中包装存储过程、触发器和函数。我希望它只是将它们作为普通 SQL 输出(没有评论)。并完全删除条件SET语句。

我在这里看到了一个类似的问题,但是它没有回答我的问题:如何在 MySQL 转储中删除这些评论?

我不打算执行 SQL。

并且在它上面做一个grep/sed也会删除触发器等。

4

1 回答 1

0

要仅删除 SET 命令,请使用:

perl -pi.bak -e 's|^/\*!\d{5} SET .*;\s*$||g;' filename.sql

要仅删除评论,请使用:

perl -pi.bak -e '
    s|/\*!\d{5} ([^\*]+)\*/|\1|g;
    s|\*/$||g;
    s|\*/\s*(;?;?)$|\1|g;
    s|/\*!\d{5} ||g;' filename.sql

要删除两者,请使用:

perl -pi.bak -e '
    s|^/\*!\d{5} SET .*;\s*$||g;
    s|/\*!\d{5} ([^\*]+)\*/|\1|g;
    s|\*/$||g;
    s|\*/\s*(;?;?)$|\1|g;
    s|/\*!\d{5} ||g;' filename.sql
于 2013-04-01T23:23:37.007 回答