PostgreSQL

PostgreSQL’de bir tablonun sütun isimlerini ve veri tiplerini almak

PostgreSQL’de bir tablonun sütunlarının isimlerini ve bu sütunlara ait veri tiplerini almaya ihtiyacım oldu. Biraz araştırmadan sonra güzel bir SQL buldum ve aşağıdaki kodu hazırladım. İşine yarayan olabilir diye paylaşayım.

$tablename = 'tablename';
 
$sql =  'SELECT
a.attname AS "Sutun",
pg_catalog.format_type(a.atttypid, a.atttypmod) AS "Veritipi"
FROM
pg_catalog.pg_attribute a
WHERE
a.attnum > 0
AND NOT a.attisdropped
AND a.attrelid = (
SELECT c.oid
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ '^('.$tablename.')$'
AND pg_catalog.pg_table_is_visible(c.oid)
)';
 
$resulted_array = pg_fetch_all(pg_query($sql));

PostgreSQL’de büyük harfli tablo isimleri

PostgreSQL veritabanı sunucusunda eğer tablo ya da sütun isimleri içinde büyük harfler kullanıyorsanız (örn : TABLE_NAME veya TableName) yaptığınız sorguda tablo ya da böyle bir “relation” yok diye hata alabilirsiniz. Çünkü PostgreSQL sorgu içindeki tablo ve sütun isimlerini küçük harflere (lowercase) çeviriyor. Bu sorunu, için büyük harfle yazdığınız tablo ya da sütun isimlerinin başına ve sonuna çift tırnak (örn : “TabloAdı”) koyarak aşabilirsiniz.

Örnek :

SELECT "SUTUN_ADI" FROM "TableName" WHERE "SUTUNADI"='test';