web-dev-qa-db-ja.com

SQL文字列フォーマッタ

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

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

select * from users where name = 'Paul'

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

select * 
from users
where
   name = 'Paul'

正確なフォーマットは重要ではありません。大きなSQL文字列を取得して、より読みやすいものに分割するための何かが必要です。

41
Paul D. Eden

チェックアウト sqlparse 。これは、コマンドsqlformatをインストールするPythonモジュールです。使用法は簡単です。例:

sqlformat --reindent --keywords upper --identifiers lower my_file.sql

前述のCLIの代替手段を試しましたが、次のようになりました。

  • sqlinformが出ています。オープンソースのCLIアプリケーションが必要だからです。
  • fsqlfには機能がほとんどありません(たとえば、create viewがありません)。

sqlformatのおかげで、「REF」が SQL:2011およびSQL:2008で予約されているキーワード であることも知りました。

57
felixhummel

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:~] 
$ 
13
Wayne Walker

http://www.sqlinform.com/

このツールはSQLコードを再フォーマットします。私はそれを素晴らしい結果で使用しました。 Webアプリとして無料で、ダウンロード可能なバージョンもあります。

5
GluedHands

私は http://www.dpriver.com -を使用して楽しんでいます。これはSQL Server ManagementStudioへの素晴らしいアドインです。

3
Jarrod Dixon
1
Paul D. Eden

この目的のためだけに(比較的多額の)お金を使うことをお勧めするわけではありませんが、 Toad には、まさにあなたが望んでいることを実行する機能が組み込まれています。

これには、SQLのフォーマット方法(すべての列が別々の行にあるなど)を正確に設定できる一連のオプションが含まれています。かなりいいですが、すでにToadを持っている場合に限ります。 Oracleバージョンがこれを行うことは知っていますが、SQLServerまたは他のバージョンも同様であると思います。

0
BQ.