格式化输出SQL

工作中,经常需要在web页面中把SQL(MySQL)展示给开发人员,如果SQL不格式话,例如:

sqlsample_1

上面的SQL,咋一眼,很难看出SQL的目的是什么。而格式化的输出可以让SQL更易读懂,如:

screenshot-sqlparser

上周末做了一个简单的PHP SQL Format工具,可以实现上述功能,这里简单的介绍如何使用PHP SQL Format(也可以参考这里)。

1. 下载相关文件并解压到你的WEB目录

有如下文件:

将这些文件都放入web目录下的sqlparserlib目录下。

2. 编写如下PHP/HTML代码
<link rel="stylesheet" type="text/css" href="sqlparserlib/sqlsyntax.css" /> <?php define('PARSER_LIB_ROOT', "/opt/www/sqlparserlib/"); require_once PARSER_LIB_ROOT.'sqlparser.lib.php'; function SQLFormatPHP($sql){ return PMA_SQP_formatHtml(PMA_SQP_parse($sql)); } $sql = "SELECT FROM (select from dual)"; echo SQLFormatPHP($sql); ?>

只要把上面php代码中的$sql改成你的输入SQL就OK了。

3. 需要注意的问题

* 上面的代码中,路径一定要注意,在你的代码中也必须引用正确的路径

* 上面的sqlsyntax.css定义了很多CSS,注意不要与你的CSS冲突了

* 上面require_once很多函数,注意不要与你的函数冲突了

4. 实现说明

这里使用的代码包sqlparser.lib.php来自phpMyAdmin,稍微做了一些改动,让这块代码能够独立使用。

看了Stackoverflow上很多朋友也有类似问题,所以就花了几个小时的尝试,把phpMyAdmin里面SQL Parser相关的代码独立出来,lib中有很多的代码都应该是无用的,我并没有做精简,所以你最求效率的话,可能需要自己再优化一下。

2 responses to “格式化输出SQL”

  1. 真的很厉害哦,慢慢看~~~~

Leave a Reply

Your email address will not be published. Required fields are marked *