本文介绍了如何在DBeaver中使用pgFormatter、sqlprase、sqlformatter等外部格式化程序对sql进行格式化。
一、pgFormatter
pgFormatter本质是perl脚本,所以需要perl运行环境支持。
1.准备工作
下载地址:https://github.com/darold/pgFormatter/releases/
perl下载地址:https://strawberryperl.com/下载Portable版本的zip压缩包即可
pgFormatter和perl下载后解压到任意目录,此处以Program Files文件夹为例
设置pgFormatter的配置文件
将D:\Program Files\pgFormatter-5.5\doc下的pg_format.conf.sample文件复制到D:\Program Files\pgFormatter-5.5文件夹下,并重命名为.pg_format.conf,该文件定义了如何对sql进行格式化,可参考官方文档用法说明根据自己需要进行修改。
2.DBeaver中进行配置
窗口→首选项→编辑器→SQL编辑器→SQL格式化
格式选择:外部格式化程序
命令行中输入:
"D:\Program Files\perl-5.32.1.1_x64\perl\bin\perl.exe" "D:\Program Files\pgFormatter-5.5\pg_format" -c "D:\Program Files\pgFormatter-5.5.pg_format.conf" -
注意不要漏掉最后的短杠-
点击应用,如果看到sql格式化成功说明即配置成功
点击“应用并关闭”即可,在SQL编辑器中使用Ctrl+Shift+F即可对sql进行格式化
二、sqlparse
sqlparse作为python中一个常用的sql解析库,经常用来解析sql,同时也可以用来格式化sql。
1.准备工作
下载安装python:https://www.python.org/downloads/windows/,使用Embeddable版本的zip压缩包即可,同样解压到Program Files文件夹
下载安装pip
下载pip脚本:https://bootstrap.pypa.io/get-pip.py,注意python2.7和python3使用的get-pip.py文件不同,复制get-pip.py文件到D:\Program Files\python3.12.1文件夹下,在cmd中进行安装
python get-pip.py
安装后会在D:\Program Files\python3.12.1\Scripts下出现pip.exe文件
使用pip安装sqlparse
pip install sqlparse
在D:\Program Files\python3.12.1文件夹下创建sql_parse.py文件,sql_parse.py内容如下:
#-*- coding: UTF-8 -*-
# sql_parse.py 注意文件名必须使用下划线分割单词,不然会执行出错!
import sys
import sqlparse
def sql_formatter(record):
sql = sqlparse.format(
record,
keyword_case='upper',#关键字大小写
identifier_case='lower',#标识符大小写
truncate_strings=70,#字符串超过指定长度截断
reindent=True,#是否整体缩进
comma_first=False,#是否逗号在前
wrap_after=100 #select字段列表超过多少字符换行,如果不指定每个字段单独一行
).strip('\n')
sql='\n'.join([l for l in sql.split('\n')])
return sql
# append
file_path = sys.argv[1]
with open(file_path,"r") as f:
read_sql = f.read()
with open(file_path,"w") as f:
for sql in read_sql.split(';'):
_sql = sql_formatter(sql)
print(_sql)
print("\n")
sqlparse.format参数说明详见: https://sqlparse.readthedocs.io/en/latest/api/#formatting
2.在DBeaver中配置
窗口→首选项→编辑器→SQL编辑器→SQL格式化
命令行中输入:
"D:\Program Files\python3.12.1\python.exe" "D:\Program Files\python3.12.1\sql_parse.py" ${file}
注意,这里需要勾选使用临时文件
点击“应用”后如果sql格式化成功即配置成功
点击“应用并关闭”即可,在SQL编辑器中使用Ctrl+Shift+F即可对sql进行格式化
在dbeaver中使用sqlparse进行格式化参考了该篇文章https://jakpentest.tistory.com/190
三、sql-formatter
sql-formatter是一个JavaScript类库,仓库地址:https://github.com/sql-formatter-org/sql-formatter
1.准备工作
下载安装Node.js:https://nodejs.org/en/download/ ,这里我们下载免安装的zip版本即可,同样解压到Program Files文件夹
安装sqlformmatter:
npm install sql-formatter
这里没有使用-g参数,即在当前文件夹进行安装,安装完成以后可以看到D:\Program Files\node-v20.10.0-win-x64\node_modules文件夹下多了一个sql-formatter文件夹。
创建sqlformatter格式化的配置文件config.json,可以是任意位置,比如:D:\Program Files\node-v20.10.0-win-x64\node_modules\sql-formatter\bin下
config.json内容如下:
{
"language": "spark",
"tabWidth": 2,
"keywordCase": "upper",
"linesBetweenQueries": 2
}
2.在DBeaver中配置
窗口→首选项→编辑器→SQL编辑器→SQL格式化
命令行中输入:
node "D:\Program Files\node-v20.10.0-win-x64\node_modules\sql-formatter\bin\sql-formatter-cli.cjs" -c "D:\Program Files\node-v20.10.0-win-x64\node_modules\sql-formatter\bin\config.json" ${file}
注意,node命令中路径需要使用双斜杠,需要勾选使用临时文件
点击“应用”后如果sql格式化成功即配置成功
版权归原作者 数据的流 所有, 如有侵权,请联系我们删除。