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内容如下:

# sql_parse.py 注意文件名必须使用下划线分割单词,不然会执行出错!
import sys
import sqlparsedef 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格式化成功即配置成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/294913.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

位运算:Leetcode137.只出现一次的数字(2)

题目描述: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1: 输入:nums [2,2,3,2] 输出:3示例 2: 输入&…

Openwrt AP 发射 WiFi 信号

问题 想一次把 OpenWrt 路由器 wifi 问题给解决,完全取代路由器。 使用 倍控的 N5105 设备,有 mPCIe 接口,使用了 intel AX200 无线网卡,支持 2.4G 与 5G。 设置步骤 OpenWrt 镜像 第一次使用的镜像不支持 wifi,在…

Google推出Gemini AI开发——10年工作经验的Android开发要被2年工作经验的淘汰了?

应用程序中利用 Gemini 前言(可略过)、使用 Gemini Pro 开发应用程序正文、Android Studio 中构建Gemini API Starter 应用第 1 步:在 AI 的新项目模板的基础上进行构建第 2 步:生成 API 密钥第 3 步:开始原型设计 正文…

核方法 : 多项式核函数

一、定义 多项式核函数: 将数据映射到高维空间,从而实现 低维线性不可分 到 高维线性可分 二、核心代码介绍 1、关于 svm_clf.decision_function : 2、关于 PolynomialFeatures(degree3) : 二、全量代码 import numpy as …

python读取Excel内容并展示成json

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 伙伴们,又是许久未曾见面了。最近也是在忙着加班,加上没有新技术的输入和产出&…

INFINI Gateway 如何防止大跨度查询

背景 业务每天生成一个日期后缀的索引,写入当日数据。 业务查询有时会查询好多天的数据,导致负载告警。 现在想对查询进行限制–只允许查询一天的数据(不限定是哪天),如果想查询多天的数据就走申请。 技术分析 在每…

Ubuntu 常用命令之 tar 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 tar 命令在 Ubuntu 系统中是用来打包和解包文件的工具。tar 命令可以将多个文件或目录打包成一个 tar 文件,也可以将 tar 文件解包成原来的文件或目录。 tar 命令的常用参数如下 c:创建一个新的 tar 文件…

Vue 实现响应式布局

实现响应式布局是工作中必不可少 客户需要 若是使用vue element ui 的方式实现 浏览器宽度为760的情况 浏览器宽度为360的情况 手机上的显示的情况 一、对于屏幕尺寸的定义 element UI参照Bootstrap的解决方案提供了五种屏幕大小尺寸:xs、sm、md、lg 和 xl。并对…

OpenCV与YOLO学习与研究指南

引言 OpenCV是一个开源的计算机视觉和机器学习软件库,而YOLO(You Only Look Once)是一个流行的实时对象检测系统。对于大学生和初学者而言,掌握这两项技术将大大提升他们在图像处理和机器视觉领域的能力。 基础知识储备 在深入…

行列式:方程组未知数的计算:克拉默法则

行列式:方程组未知数的计算 ![ ](https://img-blog.csdnimg.cn/direct/4a9c2800da3746ea95c1a3c93057d796.png)

桶装水送水小程序:提升服务质量的利器

随着移动互联网的发展,越来越多的消费者通过手机在线购物和订购商品。如果你是一名桶装水供应商,想要拓展线上业务,那么开发一个桶装水微信小程序将是一个明智的选择。本文将指导你从零开始开发一个桶装水微信小程序,让你轻松完成…

使用Docker一键部署Uptime Kuma,并将监控服务映射至公网访问

文章目录 **主要功能**一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用本教程安装。本教程使用Docker部署服务,如何安装Docker详见: 二、Docker部署Uptime Kuma三、实现公网查看网站监控四、使用固定公网地址访问…