1

我正在寻找从我的本地 mysql.log 文件中恢复对生产服务器执行的更改,并且我已经使用以下方法获得了更改:

^.*(ALTER TABLE).*(ADD|DROP|CHANGE|^AUTO_INCREMENT).*$

..我也会抓住不包括and的CREATE TABLE声明。因此,我首先尝试只避免使用更直观的方式,但我并没有成功:SHOW CREATE TABLECREATE TABLE IF NOT EXISTSSHOW

^.*(^SHOW)*(CREATE TABLE).*$

^.*(^SHOW CREATE TABLE|CREATE TABLE).*$

任何帮助表示赞赏,

胭脂红

4

1 回答 1

2

似乎消极的展望可以用来解决你的问题。在这种情况下,以下正则表达式应该可以完成这项工作。

(?<!SHOW )(CREATE TABLE)(?! IF)

在这种情况下,它会查找前面没有“SHOW”或后面没有“IF”的“CREATE TABLE”的任何实例。注意组中的空格。

然后你可以使用

^.*(?<!SHOW )(CREATE TABLE)(?! IF).*

匹配整行。

您可以在此处阅读前瞻和后视。

于 2013-07-28T09:48:12.917 回答