Skip to main content

Posts

Showing posts from 2018

PostgreSQL Veritabanı Üzerinden Mail Atılması (SQL İle)

Merhaba, PostgreSQL'de veritabanı üzerinden mail atmak için bir kaç yol bulunuyor. Bu yollar açık kaynak kodlu araçları kullanmaktan geçiyor örneğin pgMail ya da bir fonksiyon içindeki bir python koduyla da yapabilirsiniz. Bunlar, kullanabileceğiniz yöntemlerden sadece ikisi. Veritabanı üzerinden sadece SQL scripti kullanarak mail atılması için bir script hazırladım. Bu yazıda farklı bir araç tanıtmayacağım. Postgres'in kendi özelliğini kullanarak bu işlemi gerçekleştirmek için aşağıdaki adımları kullanmanız yeterli olacaktır. (Linux tarafında mail atılması için gereken kurulumlarınız hazırsa tabi) Maili Postgres'in in-core özelliği olan COPY ifadesini kullanarak atacağız. COPY ifadesini kullanarak farklı kaynaklardaki verileri Postgres veritanabındaki tablolara yazabileceğimiz gibi, Postgres veritabanındaki bir tabloyu da sunucu üzerinde, postgres kullanıcısnın yetkisi dahilindeki dizinlere aktarmamız mümkün. COPY ile ilgili daha fazla bilgiye bu linkten ulaşabili...

PostgreSQL’de Array Veri Tipi ve Örnekleri

Merhaba, Array veri tipi bir yada daha çok boyutlu olabilir. Bir alana aynı veri tipinde birden fazla değer girilmesini sağlar diyebiliriz. Bir array’in hangi veritipine ait verileri barındıracağını belirleyebiliriz. Örneğin text veri tipinde bir array kullanabiliriz. Basit bir array örneği yapalım. Aşağıdaki örnekte tek bir satır ve sütun göreceksiniz. Array içinde kullanılan her iki değer text veri tipinde. [gunce] # SELECT array['aa','bb'];  array   --------- {aa,bb} (1 row) Bu ARRAY henüz bir tablonun sütunu olmadığı için deneme yapalım ve yukarıdaki array içine bir alan daha ekleyelim text veri tipinde olmayan. Böyle bir durumda hata verecektir çünkü ilk değer ne ise onunla aynı veri tipine sahip bir değer görmek isteyecektir. [gunce] # SELECT array['aa','bb', 11]; ERROR:  22P02: invalid input syntax for integer: "aa" Ürünlerin içeriklerini saklayan bir tablomuz olsun. [gunce] # CREATE TABLE urunler(isim ...

PostgreSQL’de Range Veri Tipleri ve Örnekleri

Merhaba, Range veri tipleri, verilerin belirli aralıkta olmasıyla ilgilidir. Örneğin otel rezervasyon uygulamasında bir odanın hangi saatler arasında boş veya dolu olduğunu tstzrange(timestamp with time zone) veri tipini kullanarak saklayabilirsiniz veritabanınızda. Postgres’de bahsedilen bu örnekteki gibi farklı veri tiplerine de uygun range veri tipleri bulunmaktadır. Timestamp’in yanında bir de numeric, date, int veri tiplerine de uygun farklı range veri tipleri bulunmaktadır. Postgres’de mevcut range veri tipleri aşağıdaki gibidir. int4range — Range of integer int8range — Range of bigint numrange — Range of numeric tsrange — Range of timestamp without time zone tstzrange — Range of timestamp with time zone daterange — Range of date Aralıkların Belirlenmesi İçi boş olmayan aralığın düşük ve yüksek olmak üzere iki adet sınırı bulunur. Bu iki sınır arasındaki tüm değerler bizim veri tipimize uygun bu aralık içinde yer alır. Düşük sınırın aralığa dahil olması için ‘[‘ işaret...

Tablo Yetkilerinin Başka Tabloya Tanımlanması

Merhaba, Daha önce aldığım notun kaybolmaması adına bu yazıyı yazmak istedim. Paylaşacağım bu yazı içeriğinde yapılan işlemlerin sonucuna farklı yollardan da ulaşılabilir tabi.  Tabloların belirli kullanıcılar tarafından erişilebilir olması için kullanıcıların tablolar üzerinde yetkiye ihtiyaçları vardır. Bunun için Postgres, GRANT komutu kullanılır. GRANT ile ilgili detaylı bilgiye buradan ulaşabilirsiniz. Bir tablo üzerinde birden fazla kullanıcının farklı yetki tipinde yetkiye sahip olması olağandır. Belirli tablo üzerindeki kullanıcı yetkilerini aşağıdaki script ile görebilirsiniz. SELECT grantor, grantee, privilege_type   FROM information_schema.role_table_grants  WHERE table_schema ='public'  AND table_name = 'test_table';   Yeni bir tablo eklediniz ve mevcut tablonuzun üzerindeki kullanıcı yetkilerinin birebir yeni tablonuzda da olmasını isterseniz yukarıdaki scripti biraz daha değiştirerek GRANT scriptini SQL ile oluşturabilirsiniz....