Quantcast
Channel: 鹏博 - 2013 - 6
Viewing all articles
Browse latest Browse all 4

正则去除MySQL中的注释

$
0
0

工作中遇到的问题,记录一下。

在进行大数据库导入中经常出现错误:

1、[Err] 1231 - Variable 'foreign_key_checks' can't be set to the value of '1'

2、[Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

对与错误1,一般是由于SQL中的注释引起的错误,所以,在导入前,最好使用工具去除这些注释。

对与错误2,这个是由于Mysql的max_allowed_packet配置不当造成的,Win下你可以找到my.ini,Unix环境下对应的是my.cnf,检查配置中的max_allowed_packet设置是否过小,将其调整为匹配你SQL文件的大小。

比如我要处理的SQL文件是200M,于是我的My.cnf中max_allowed_packet设置为:

max_allowed_packet = 250M

回过头还来说注释的问题,SQL注释分两种:

a: 形式为 /* mmm */;   /* nnn */;

b: 形式为 -- mmm 

下面给出正则,我常使用的是Sublime Text和Notepad++,前者是打码神器,但对大文件处理效率不佳,后者我常用来处理大文件,比如手下的这的SQL约700M。

使用Notepad++,以正则匹配对应MySQL文件中的注释,替换删除:

去除注释a的正则:

/\*.*\*/;

去除注释b的正则:

^\-\-.+

最后去除多余空行

^\r\n+

Done!


Viewing all articles
Browse latest Browse all 4

Trending Articles