有谁知道一个程序、实用程序或一些程序库,最好是用于 Linux,它采用未格式化的 SQL 字符串并漂亮地打印出来?
例如我想要以下
select * from users where name = 'Paul'
改成这样
select *
from users
where
name = 'Paul'
确切的格式并不重要。我只需要一些东西来获取一个大的 SQL 字符串并将其分解成更易读的东西。
有谁知道一个程序、实用程序或一些程序库,最好是用于 Linux,它采用未格式化的 SQL 字符串并漂亮地打印出来?
例如我想要以下
select * from users where name = 'Paul'
改成这样
select *
from users
where
name = 'Paul'
确切的格式并不重要。我只需要一些东西来获取一个大的 SQL 字符串并将其分解成更易读的东西。
查看sqlparse。它是一个安装命令的 Python 模块sqlformat
。用法很简单,例如:
sqlformat --reindent --keywords upper --identifiers lower my_file.sql
我尝试了上述 CLI 替代方案,但是:
sqlinform
出来了,因为我想要一个开源 CLI 应用程序。fsqlf
只有很少的功能(create view
例如缺少)。感谢sqlformat
我什至了解到“REF”是SQL:2011 和 SQL:2008 中的保留关键字。
fsqlf ( http://sourceforge.net/projects/fsqlf/ ) 是一个命令行或 GUI 程序,开源,用于格式化 SQL。它支持有一个formatting.conf 文件,它可以让您在最终产品的外观方面有很大的灵活性。
示例 1:
☺ [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
示例 2:
☺ [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
示例 3:
☺ [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