DBeaver中使用外部格式化程序对进行sql格式化

本文介绍了如何在DBeaver中使用pgFormatter、sqlprase、sqlformatter等外部格式化程序对sql进行格式化。

目录

一、pgFormatter

1.准备工作

2.DBeaver中进行配置

二、sqlprase

1.准备工作

2.在DBeaver中配置

三、sql-formatter

1.准备工作

2.在DBeaver中配置


一、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,复制到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内容如下:

python 复制代码
# 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内容如下:

bash 复制代码
{
  "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格式化成功即配置成功

相关推荐
一马平川的大草原15 天前
如何利用DBeaver配置连接MongoDB和人大金仓数据库
数据库·mongodb·dbeaver
疯狂学习GIS1 个月前
DBeaver中PostgreSQL数据库显示不全的解决方法
数据库·postgresql·pg·dbeaver·数据库连接·databases·默认数据库
开着拖拉机回家2 个月前
【DBeaver】连接带kerberos的hive[Apache|HDP]
数据仓库·hive·hadoop·kerberos·dbeaver
欣慰的三叶草(● ̄(エ) ̄●)2 个月前
【Mac苹果电脑安装】DBeaverEE for Mac 数据库管理工具软件教程【保姆级教程】
数据库·macos·数据库管理·dbeaver·dbeaveree·db数据库管理工具
加贝21314 个月前
使用DBeaver通过代理服务器连接数据库
数据库·代理·dbeaver
非晓为骁6 个月前
【Go】用 DBeaver、db browser 和 SqlCipher 读取 SqlCipher 数据库
数据库·sqlite·dbeaver·sqlcipher·加密数据库
tonglingtou18757 个月前
解决 DBeaver 查询时不刷新数据,需要重新连接才会刷新,有缓存一样
java·数据库·dbeaver
小康师兄7 个月前
IoTDB 入门教程 基础篇⑦——数据库管理工具 | DBeaver 连接 IoTDB
数据库·工具·驱动·iotdb·dbeaver
@王坤8 个月前
excel文件导入dbeaver中文乱码
dbeaver
傻傻虎虎1 年前
【数据库】Unlogged 表使用
数据库·postgresql·oracle·dbeaver·unlogged