本文介绍了如何在DBeaver中使用外部格式化程序对sql进行格式化。
一、pgFormatter
1.准备工作
下载地址:https://github.com/darold/pgFormatter/releases/
pgFormatter是perl脚本,所以需要perl运行环境支持。
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进行格式化
二、sqlprase
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,复制到D:\Program Files\python3.12.1文件夹下,在cmd中进行安装
python get-pip.py
安装后会在D:\Program Files\python3.12.1\Scripts下出现pip.exe文件
使用pip安装sqlprase
pip install sqlparse
在D:\Program Files\python3.12.1文件夹下创建sql_parse.py文件,sql_parse.py内容如下:
# 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).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")
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中使用sqlprase进行格式化参考了该篇文章https://jakpentest.tistory.com/190