フォーマットされていないSQL文字列を受け取り、それをきれいに出力するプログラム、ユーティリティ、またはできればLinux用のプログラムライブラリを知っている人はいますか?
たとえば、私は次のことを望みます
select * from users where name = 'Paul'
このようなものに変更されます
select *
from users
where
name = 'Paul'
正確なフォーマットは重要ではありません。大きなSQL文字列を取得して、より読みやすいものに分割するための何かが必要です。
チェックアウト sqlparse 。これは、コマンドsqlformat
をインストールするPythonモジュールです。使用法は簡単です。例:
sqlformat --reindent --keywords upper --identifiers lower my_file.sql
前述のCLIの代替手段を試しましたが、次のようになりました。
create view
がありません)。sqlformatのおかげで、「REF」が SQL:2011およびSQL:2008で予約されているキーワード であることも知りました。
fsqlf( http://sourceforge.net/projects/fsqlf/ )は、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:~]
$
このツールはSQLコードを再フォーマットします。私はそれを素晴らしい結果で使用しました。 Webアプリとして無料で、ダウンロード可能なバージョンもあります。
私は http://www.dpriver.com -を使用して楽しんでいます。これはSQL Server ManagementStudioへの素晴らしいアドインです。
この目的のためだけに(比較的多額の)お金を使うことをお勧めするわけではありませんが、 Toad には、まさにあなたが望んでいることを実行する機能が組み込まれています。
これには、SQLのフォーマット方法(すべての列が別々の行にあるなど)を正確に設定できる一連のオプションが含まれています。かなりいいですが、すでにToadを持っている場合に限ります。 Oracleバージョンがこれを行うことは知っていますが、SQLServerまたは他のバージョンも同様であると思います。