SQL查询格式化程序


14

是否有(基于Linux的)SQL查询格式化程序/插件/扩展?

我使用PostgreSQL和MySQL,但也欢迎使用其他数据库。

我可以使用VM进行测试,但希望使用基于Linux(Ubuntu)的解决方案。

我看到了在线版本,但没有可安装的版本。

基于Eclipse的IDE也是一个加号

例:

select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc

SELECT f1, f2, fname, lName
FROM tblName
WHERE f1 = true
AND fname IS NOT NULL
ORDER BY lName ASC

这是一个在线示例:

但是我宁愿在本地环境中

有关:

更新:

看这个:

最后更新:

尽管这可能是一个过大的杀伤力,但是Jet Brains拥有一个新的Database IDE,它具有一些不错的重新格式化选项


您是否已经查看过SQLinForm(sqlinform.com)格式化程序。它是用Java编写的,因此可以在Linux上运行,并且具有命令行版本和可用的API
Guido

Answers:


8

pgAdmin带有内置的查询格式化程序。您将创建一个视图以查看查询的格式如下:

在此处输入图片说明

当然,未引用的混合大小写标识符将转换为小写。(但我认为这是一种祝福。)

ASCin 这样的干扰词ORDER BY将被剪裁。

最后但并非最不重要的一点是,该视图必须首先在数据库中有效。因此,并非完全符合您的要求。查询实际上是根据视图定义进行反向工程的。


1
抱歉,我认为您误解了这个问题,我可以自己格式化。我正在寻找的是在命令或IDE中执行此操作的方法。示例:我将突出显示查询并按ctrl + shift + F,这将自动缩进,所有关键字都变为UPPER,每个命令/关键字都以新行开头,以此类推...因此,如果有人键入或编写了该较长的查询,想要快速格式化它而不是手动执行。这是一个在线示例:dpriver.com/pp/sqlformat.htm
Phill

1
@PhillPafford:是的,不完全是您想要的。我所知道的最接近PostgreSQL查询格式化程序的东西。并不意味着那里什么都没有。
Erwin Brandstetter,2012年

您是否尝试过jetbrains.com/dbe
Phill

3

fsqlf(http://sourceforge.net/projects/fsqlf/)比较通用(用SQL代替pgSQL),它是用于格式化SQL的命令行或GUI程序,是开源的。它支持具有formatting.conf文件,该文件使您在最终产品的外观上具有很大的灵活性。

例子:

  [wwalker@speedy:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT
  f1
, f2
, fname
, lName
FROM tblName
WHERE f1=true
AND fname is not null
ORDER BY lName asc
  [wwalker@speedy:~] 
$ vim formatting.conf # 2 character change
  [wwalker@speedy:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT
 f1 ,
 f2 ,
 fname ,
 lName
FROM tblName
WHERE f1=true
AND fname is not null
ORDER BY lName asc
  [wwalker@speedy:~] 
$ vim formatting.conf # 1 character change
  [wwalker@speedy:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT
 f1 , f2 , fname , lName
FROM tblName
WHERE f1=true
AND fname is not null
ORDER BY lName asc
  [wwalker@speedy:~] 
$ 




-1

SQLinForm(http://www.sqlinform.com)基于Java,因此可以在Linux环境中运行。它们具有API和命令行版本,您可以在脚本中轻松使用它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.