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

news2025/1/22 23:59:03

本文介绍了如何在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 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格式化成功即配置成功

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机场信息集成系统系列介绍(6):机场协同决策支持系统ACDM

目录 一、背景介绍 1、机场协同决策支持系统是什么? 2、发展历程 3、机场协同决策参与方 4、相关定义 二、机场协同决策ACDM的建设目标 (一)机场协同决策支持系统的宏观目标 1、实现运行数据共享和前序航班信息透明化 2、实现地面资源…

基于Java web的住院管理系统论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

otter-harbor同步

一. 部署及依赖 otter Github (一). 服务启动 1. mysql 5.6版本以上,作为 otter-manger 使用的数据库 # mysql docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 --character-set-serverutf8mb4 --collation-serverutf8mb4_un…

第11章 GUI Page421~422 步骤六 支持文字

运行效果: 关键代码: 新增头文件: //item_text.hpp #ifndef ITEM_TEXT_HPP_INCLUDED #define ITEM_TEXT_HPP_INCLUDED #include "item_i.hpp"class TextItem : public IItem { public:TextItem(): _startPosition(0, 0), _endPos…

论文推荐:大型语言模型能自我解释吗?

这篇论文的研究主要贡献是对LLM生成解释的优缺点进行了调查。详细介绍了两种方法,一种是做出预测,然后解释它,另一种是产生解释,然后用它来做出预测。 最近的研究发现,即使LLM是在特定数据上训练的,也不能认…

SpringMVC系列之技术点定向爆破二

SpringMVC的运行流程 客户端发送请求 tomcat接收对应的请求 SpringMVC的核心调度器DispatcherServlet接收到所有请求 请求地址与RequestMapping注解进行匹配,定位到具体的类和具体的处理方法(封装在Handler中) 核心调度器找到Handler后交…

c语言:计算1+2+3……+n的和|练习题

一、题目 输入一个数n,计算123……n的和 二、代码截图【带注释】 三、源代码【带注释】 #include int main() { int num0; printf("请输入要运算的数:"); scanf("%d",&num); sumResult(num);//相加结果函数 } //计算打印…

关于“Python”的核心知识点整理大全37

目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva…

3dsmax渲染太慢,用云渲染农场多少钱?

对于许多从事计算机图形设计的创作者来说,渲染速度慢是一个常见问题,尤其是对于那些追求极致出图效果的室内设计师和建筑可视化师,他们通常使用3ds Max这样的工具,而高质量的渲染经常意味着长时间的等待。场景复杂、细节丰富&…

恢复丢失数据,AnyMP4数据恢复软件帮您解忧

在现今数字化的时代,我们经常会面临着数据丢失的困扰。无论是因为误操作、病毒攻击、格式化、系统崩溃还是硬盘损坏等原因,重要数据的丢失都会给我们带来巨大的困扰和损失。为此,AnyMP4数据恢复软件应运而生,它为用户提供了一种高…

ssm基于BS的库存管理软件设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

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

📑Linux/Ubuntu 常用命令归类整理 Ubuntu系统下的zip命令是用来压缩文件的。这个命令可以将一个或多个文件或者目录压缩成一个.zip文件,也可以将整个目录树压缩成一个.zip文件。 zip命令的基本格式 zip [选项] [压缩文件名] [要压缩的文件或目录...]z…

机器视觉兄弟们,出身寒微,不是耻辱,能屈能伸,方为丈夫

人生过往,当时只道是寻常。 可以说,“社会边角料”这个词,即刺耳,又是那么难听。只是,无数的年轻人和中年人,都喜欢用这个词来自嘲。 特别是出身寒微,没啥资源的80后和90后,他们总是…

.NET中的Swagger使用

目录 前言 一、Swagger是什么? 二、如何Swagger文档说明的信息 1.在AddSwaggerGen方法中写入文档信息 2.运行效果 二、文档UI界面标题、路由设置 1.在中间件UseSwaggerUI方法中配置 三、文档UI界面添加接口注释 1.在 .csproj中配置 2.在AddSwaggerGen方法中配置Incl…

SLAM算法与工程实践——雷达篇:Livox激光雷达使用

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接,本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址: SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

C++设计模式 #3策略模式(Strategy Method)

动机 在软件构建过程中,某些对象使用的的算法可能多种多样,经常改变。如果将这些算法都写在类中,会使得类变得异常复杂;而且有时候支持不频繁使用的算法也是性能负担。 如何在运行时根据需求透明地更改对象的算法?将…

ceph块存储学习

目录 ceph的组件和功能 ceph的数据读写流程 ceph存储池学习 ceph的组件和功能 Ceph OSD:功能是存储数据,处理数据的复制、恢复、平衡数据分布,并将一些相关数据提供给Ceph Monitor,。 Ceph Monitor: 功能是维护整个集群健康状态&…

关于“Python”的核心知识点整理大全36

目录 13.4.4 向下移动外星人群并改变移动方向 game_functions.py alien_invasion.py 13.5 射杀外星人 13.5.1 检测子弹与外星人的碰撞 game_functions.py alien_invasion.py 13.5.2 为测试创建大子弹 13.5.3 生成新的外星人群 game_functions.py alien_invasion.py …

怎么开启基于软件标签的kasan, CONFIG_KASAN_SW_TAGS=y

如果内核版本等于或大于5.0,那么需要在通用KASAN和基于软件标签的KASAN之间做出选择,前者的配置宏是CONFIG_KASAN_GENERIC,后者的配置宏是CONFIG_KASAN_SW_TAGS。menuconfig无法勾选CONFIG_KASAN_SW_TAGSy CONFIG_KASAN_SW_TAGS 依赖 CC_HAS…

python dash 的学习笔记1

dash 用python开发web界面 https://dash.plotly.com/ 官方上支持jula F# python一类。当然我只会python只学习python中使用dash. 要做一个APP,用php,java以及.net都可以写,只所有选择python是因为最近在用这一个。同时也发现python除了慢全是优点。 资料…