2010-11-19 13 views
2
Şu anda benim sql kabuk emacs sql-mod kullanıyorum

, bir (basitleştirilmiş) sorgu yanıt aşağıdaki gibidir:Homoiconicity ve SQL

Sonra bu verilere, örneğin dayalı başka bir sorgu formüle etmek istiyorsanız
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; 

Ne visit_key ve created arasındaki virgül eklemek zorunda olduğunu görmek ve tırnak son kullanım değeri çevreleyen edeceğiz.

İçeriğin daha fazla homoiconically olduğunu gösteren bir SQL DB kabuğu var mı? Bu tür bir düzenlemeyi en aza indirgeyebilir miyim? Örneğin.

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

veya

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

Btw postgresql kullanıyorum. SLIME yılında

Run bir Lisp derleyicisi (gibi SBCL):

+1

+1! 80)) – Keng

cevap

1

İşte orası arayıp soruyorsun tam olarak ne olduğundan emin değilim gerçi, bazen ne benzer bir fikir bu. Sonra CLSQL'u yükleyin. SLIME'in otomatik tamamlama yetenekleriyle birlikte, istediğiniz gibi bir şeyler yapmanıza yardımcı olabilecek bir "İşlevsel Veri Manipülasyon Dili" (SELECT documentation) vardır. Değilse, Lisp fonksiyonlarını ve makrolarını tanımlamak kolaydır (Lisp'i bildiğinizi varsayarsak, ama zaten bir Emacser'siniz!).

Kutudan çıktığında, çoğu SQL arabiriminin sahip olduğu güzel biçimlendirilmiş tabloları vermez, ancak eklemek çok da zor değildir. Lisp, ortak operasyonlarınızı daha kolay hale getirmenin kolay yollarını bulmak için yeterince güçlüdür.

0

psql'de aşağıdaki değişiklikler beni homoiconicity veren bir şekilde gitmek buldum:

=# select remote_ip, referer, http_method, time from hit limit 1; 
    remote_ip | referer | http_method |   time    
-----------------+---------+-------------+--------------------------- 
213.233.132.148 |   | GET   | 2013-08-27 08:01:42.38808 
(1 row) 
=# \a 
Output format is unaligned. 
=# \f ''', ''' 
Field separator is "', '". 
=# \t 
Showing only tuples. 
=# select remote_ip, referer, http_method, time from hit limit 1; 
213.233.132.148', '', 'GET', '2013-08-27 08:01:42.38808 

uyarılar: Her şey bir dize olduğunu ve başlangıç ​​ve bitiş tırnak eksik. Wiki bağlantısı için