SQLstring格式化器

有谁知道一个程序,一个实用程序,或一些编程库,最好是Linux,采取一个无格式的SQLstring,漂亮的打印它?

例如,我想要以下内容

select * from users where name = 'Paul' 

改变成这样的东西

 select * from users where name = 'Paul' 

确切的格式不重要。 我只需要一些东西来取一个大的SQLstring,并把它分解成更可读的东西。

Solutions Collecting From Web of "SQLstring格式化器"

http://www.sqlinform.com/

这个工具重新格式化SQL代码。 我用它与真棒的结果。 它作为一个web应用程序是免费的,也有一个可下载的版本。

检出sqlparse 。 这是一个安装命令sqlformat的Python模块。 用法很简单,例如:

 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文件,它允许你在最终产品看起来很灵活。

例子:

 ☺ [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:~] $ 

我喜欢使用http://www.dpriver.com – 这是SQL server Management Studio的一个很好的插件。

不是我建议花这些(相对较大的)钱来达到这个目的,但是蟾蜍有一个内置的功能,正是你想要的。

它包含了一堆选项,可以让你准确设置你的SQL格式(所有列在不同的行上)。 很好,但只有当你已经有蟾蜍。 我知道Oracle版本这样做,但我会假设SQL server或其他版本。