2

現在、SQLシェルとしてemacs sql-modeを使用しています。(簡略化された)クエリ応答は以下のとおりです。

my_db=# select * from visit limit 4;

num |        visit_key            |          created           |    expiry
----+-----------------------------+----------------------------+------------
 1  | 0f6fb8603f4dfe026d88998d81a | 2008-03-02 15:17:56.899817 | 2008-03-02
 2  | 7c389163ff611155f97af692426 | 2008-02-14 12:46:11.02434  | 2008-02-14
 3  | 3ecba0cfb4e4e0fdd6a8be87b35 | 2008-02-14 16:33:34.797517 | 2008-02-14
 4  | 89285112ef2d753bd6f5e51056f | 2008-02-21 14:37:47.368657 | 2008-02-21
(4 rows)

そのデータに基づいて別のクエリを作成したい場合、たとえば

my_db=# select visit_key, created from visit where expiry = '2008-03-02' 
           and num > 10;

visit_keyとの間にコンマを追加しcreated、有効期限の値を引用符で囲む必要があることがわかります。

この種の編集を最小限に抑えることができるように、コンテンツをよりホモイコニックに表示する SQL DB シェルはありますか? 例えば

num, visit_key, created, expiry           
(1, '0f6fb8603f4dfe026d88998d81a', '2008-03-02 15:17:56.899817', '2008-03-02')

また

(num=1, visit_key='0f6fb8603f4dfe026d88998d81a', 
    created='2008-03-02 15:17:56.899817', expiry='2008-03-02')      

私はpostgresqlところで使用しています。

4

2 に答える 2

1

これが私が時々することと似ている1つのアイデアですが、それがあなたが求めているものと正確に一致するかどうかはわかりません。

SLIMEでLispコンパイラ(SBCLなど)を実行します。次に、CLSQLをロードします。これには「機能データ操作言語」(SELECTドキュメント)があり、おそらくSLIMEのオートコンプリート機能と組み合わせて、好きなことを行うのに役立つ可能性があります。そうでなければ、Lisp関数とマクロを定義するのは簡単です(Lispを知っていると仮定しますが、あなたはすでにEmacserです!)。

すぐに使用できるので、ほとんどのSQLインターフェイスにあるような適切にフォーマットされたテーブルは提供されませんが、それでも追加するのはそれほど難しくありません。そしてLispは確かに十分に強力なので、一般的な操作を簡単にする方法を簡単に思いつくことができます。

于 2010-11-26T20:05:35.727 に答える