实现此目的的最有效方法:
这个相关的答案具有plpgsql函数,该函数针对任何给定的表UPDATE
使用系统目录pg_attribute
自动安全地构建和运行命令
使用f_empty2null()
此答案中的函数,您可以像这样遍历选定的表:
DO
$do$
DECLARE
_tbl regclass;
BEGIN
FOR _tbl IN
SELECT c.oid::regclass
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r' -- only regular tables
AND n.nspname NOT LIKE 'pg_%' -- exclude system schemas
LOOP
RAISE NOTICE $$PERFORM f_empty2null('%');$$, _tbl;
-- PERFORM f_empty2null(_tbl); -- uncomment to prime the bomb
END LOOP;
END
$do$;
这将更新数据库中所有用户表的所有列中的所有空字符串。确保这是您想要的,否则可能会破坏数据库。
UPDATE
当然,您需要对所有选定表具有特权。
作为儿童安全装置,我评论了有效载荷。