使用PL / pgSQL检测和删除Postgres中的空列

时间:2018-05-04 12:23:49

标签: postgresql plpgsql dynamic-sql

由于使用FME从FileGDB迁移到PostGIS,我们在PostGIS数据库中有几个表,其中有很多空列(由于FME中的PostGIS编写器)。

我希望有一个函数来检测(以及之后删除)每个模式或数据库的这些空列。这也是未来可能有用的东西。 我开始使用PL / pgSQL函数来检测给定列是否为空。此后,我可以创建一个脚本来删除我的第一个脚本返回的架构中的每一列' TRUE'。

现在我被困在第一个,这是我到目前为止所得到的:

CREATE OR REPLACE FUNCTION admin.check_empty_column(
inputschemaname character varying,
inputtablename character varying,
inputfieldname character varying)
RETURNS boolean
LANGUAGE 'plpgsql'
COST 100
VOLATILE 
AS $BODY$
BEGIN
IF not exists (select inputfieldname from inputschemaname.inputtablename where inputfieldname is not null)
    THEN RETURN true;
else
    return false;
END IF;
END;
$BODY$;

ALTER FUNCTION admin.check_empty_column(character varying, character varying, character varying)
OWNER TO postgres;

如果我像这样运行这样的脚本:

select admin.check_empty_column('ref','be_gem','numac')

我收到此错误:

"ERROR:  relation "inputschemaname.inputtablename" does not exist
LINE 1: SELECT not exists (select inputfieldname from inputschemanam..."

任何想法如何解决它?

0 个答案:

没有答案
相关问题