今天收到一個郵件,說是XXX要擴容,其實就是字段加長。數據服務自然是要排查一番。想想greenplum應該會有元數據或數據字典。假設這個擴容字段有關鍵字key,那麼就可以用下面的SQL把所有包括key的字段名都取出來,排查就容易了。從這個事情可以看出字段命名規範對後期維護的重要性。
SELECT c.nspname ,b.relname ,a.attname ,a.data_type FROM (SELECT a.attrelid ,a.attname ,pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type FROM pg_catalog.pg_attribute a WHERE a.attnum > 0 AND NOT a.attisdropped) a ,pg_class b ,pg_namespace c WHERE lower(attname) LIKE '%key%' AND a.attrelid = b.oid AND b.relnamespace = c.oid ORDER BY c.nspname,b.relname,a.attname;
因爲系統完全規範化很難,所以排查數據字典只是解決大部分問題,其餘還要靠經驗、記憶和實測。