PostgreSQL – pgFormatter ile sql formatlamak
pgFormatter parametre olarak verdiğimiz bir sql dosyasını bize seçeneklere göre formatlayabiliyor. CGI olarak da kullanılabiliyor. Kullanımı da çok basit. Temel kullanımı aşağıdaki şekilde.
pg_format [options] file.sql
Piyasada bu işi yapan çeşitli uygulamalar ve artık web siteleri var. Sorguyu yapıştırıyorsun, formatlanmış halini alıyorsun. Peki pgFormatter ne işimize yarayacak ?
CGI olarak çalışabildiği için o web sitelerini bu toolu kullanarak kolayca yapabilirsiniz ama asıl konumuz o değil.
Linux ortamlarda ssh üzerinden çalışırken bazen bir script üzerinde değişiklik yapayım dediğimizde elimiz ayağımız vi
, vim
veya nano
gibi text editörler oluyor. vim sql uzantılı dosyaları otomatik olarak renklendirebiliyor. Buraya kadar bilindik. Pek bilinmeyen ise vim’in text formatlama yeteneklerinin de bulunması. Bunlara genel olarak gq
komutları diyoruz. Yalnız vim text formatlarken sql formatını bilemiyor. Düz paragraf olarak formatlıyor. Bizim yapmamız gereken yalnızca vim’e gq
komutlarını sql dosyaları üzerinde kullanırken gidip pgFormatter’ı kullanmasını söylemek.
Önce pg_format’ı tek başına kullanalım. Örnekleri yaparken pg_format sample klasöründeki .sql dosyalarını kullanacağım;
vim pgFormatter-2.0/samples/ex0.sql
Formatlayalım ve çıktığı yeni bir dosya olarak kaydedelim. Sonrasında dosyamıza tekrar bakalım.
pg_format --output pgFormatter-2.0/samples/ex0_formatted.sql pgFormatter-2.0/samples/ex0.sql vim pgFormatter-2.0/samples/ex0_formatted.sql
Burada not olarak ekleyim; pgFormatter’ı sql dosyanız içerisindeki comment’lerin hepsini kaldırmak için de kullanabilirsiniz. Bunun için --nocomment
parametresini kullanabilirsiniz
Şimdi formatlamayı vim üzerinde yapalım. Bunun öncesinde vim’e nasıl formatlayacağını anlatmamız gerekiyor. vim profile dosyamızı düzenleyelim;
vim ~/.vimrc
içerisini aşağıdaki gibi düzenleyelim;
syntax on au FileType sql setl formatprg=/usr/local/bin/pg_format\ -
Şu şekilde olmalı;
ilk satırda vim’e renklen diyoruz. 2. satırda sql dosyalarındaki format uygulaması olarak pg_format kullan diyoruz.
Artık vim (veya vi) sql uzantılı dosyaları formatlamayı biliyor. Deneyelim;
vim pgFormatter-2.0/samples/ex10.sql
Sırasıyla gq
ile başlayan harfleri basın; Sondaki G nin büyük harf olduğuna dikkat edelim. artıya (+) basmayalım. Bu tüm dokümanı formatlayacaktır.
ESC+gq+G
Tek satır, tek paragraf (gqip), 2 satır (gq2j) gibi seçenekler var. Artık bu sizin vim’e elinizin ne kadar alıştığıyla ilgili.
Referanslar
- https://github.com/darold/pgFormatter
- http://vimdoc.sourceforge.net/htmldoc/change.html#gq
- http://vimcasts.org/episodes/hard-wrapping-text/