今天收到一个邮件,说是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;
因为系统完全规范化很难,所以排查数据字典只是解决大部分问题,其余还要靠经验、记忆和实测。