52

フォーマットされていない SQL 文字列を受け取り、それをきれいに出力する、できれば Linux 用のプログラム、ユーティリティ、またはプログラム ライブラリを知っている人はいますか?

たとえば、私は次のことを望みます

select * from users where name = 'Paul'

このようなものに変更されます

select * 
from users
where
   name = 'Paul'

正確なフォーマットは重要ではありません。大きな SQL 文字列を取り、それをより読みやすいものに分割するものが必要なだけです。

4

2 に答える 2

14

fsqlf を試す

fsqlf ( http://sourceforge.net/projects/fsqlf/ ) は、SQL をフォーマットするためのオープン ソースのコマンド ラインまたは GUI プログラムです。最終製品の外観を柔軟に調整できる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
于 2013-08-19T20:49:56.807 に答える