SQL字符串格式化程序

Pau*_*den 41 sql linux formatting code-formatting

有没有人知道一个程序,一个实用程序或一些程序库,最好是Linux,它采用一个未格式化的SQL字符串并打印出来?

例如,我想要以下内容

select * from users where name = 'Paul'
Run Code Online (Sandbox Code Playgroud)

改成这样的东西

select * 
from users
where
   name = 'Paul'
Run Code Online (Sandbox Code Playgroud)

确切的格式并不重要.我只需要一些东西来获取一个大的SQL字符串并将其分解为更具可读性的东西.

fel*_*mel 56

看看sqlparse.它是一个安装命令的Python模块sqlformat.用法很简单,例如:

sqlformat --reindent --keywords upper --identifiers lower my_file.sql
Run Code Online (Sandbox Code Playgroud)

我尝试了前面提到的CLI替代方案,但是:

  • sqlinform已经出局了,因为我想要一个开源CLI应用程序.
  • fsqlf只有很少的功能(create view例如缺少).

感谢sqlformat,我甚至了解到"REF"是SQL:2011和SQL:2008中保留关键字.

  • 无论提供的参数如何,这都完全破坏了我想要的格式(缩进). (4认同)
  • 相同。即使使用-r,只是在`ORDER BY`子句之后,对于提供的每一行新字段,它都开始逐渐缩进40个字符。 (2认同)
  • 该工具由[Apache Superset](https://superset.apache.org/)自动安装。我认为这是 Superset 某种形式的认可。 (2认同)
  • 它似乎不支持从`STDIN`中读取数据的管道`|`。 (2认同)
  • 我希望你没有超过几条记录,因为几分钟后我就不再等待输出了。 (2认同)
  • 我可能不会写信给我的祖父母告诉他们这个格式化程序有多棒,但它对于我的任务来说已经足够好了...... (2认同)

Way*_*ker 11

fsqlf(http://sourceforge.net/projects/fsqlf/)是一个命令行或GUI程序,开源,用于格式化SQL.它支持使用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:~] 
$ 
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案!因为您可以使用开源工具在自己的计算机上格式化SQL查询,而无需使用第三方网站或专有工具!有阴暗的数据保留和隐私政策! (4认同)

Glu*_*nds 5

http://www.sqlinform.com/

此工具重新格式化SQL代码.我用它有很棒的结果.它作为webapp免费提供,并且还有可下载的版本.

  • 粘贴敏感数据时要小心这类网络应用.你相信它没有保存那些数据的副本吗? (7认同)