你的问题不是很清楚,但是如果你想知道某个名字的列是否存在于远程PostgreSQL数据库的某个表中,那么你应该首先设置一个foreign data wrapper,这是一个多阶段过程。然后,为了测试表中特定列的存在,您需要制定一个符合您要连接的特定DBMS标准的查询。使用以达到最佳的兼容性远程information_schema.tables
表(在这里指定为remote_tables
,你必须有一个事先CREATE FOREIGN TABLE
命令定义):如果你想连接到其他类型的DBMS的
CREATE FUNCTION sp_testing() AS $$
BEGIN
PERFORM *
FROM remote_tables
WHERE table_name = 'testtable'
AND column_name = 'ssn';
IF NOT FOUND THEN
...
END IF;
END;
$$ LANGUAGE plpgsql;
,你需要写一些自定义功能在fi C或perl,然后从本地机器上的PostgreSQL函数中调用它。然后最好在函数内完成对列的测试,函数应该将连接参数,表名和列名作为参数,并返回一个布尔值来通知结果。
你开始测试在此之前,请务必阅读所有的文档上连接到远程服务器和学习PL/pgSQL第一也将是一个很好的姿态,你寻求帮助之前,以证明自己的努力。
也许[dblink](http://www.postgresql.org/docs/current/static/dblink.html)可以提供帮助吗? –
Postgres与SQL Server不同。您可能想考虑将不同的数据库从SQL Server移动到Postgres中的不同模式。与其试图将一个设置从一个DBMS“复制”到另一个DBMS,你应该考虑如何在新环境中最好地反映出该设置的基本要求(并在开始编码之前阅读手册) –
@TomasGreif:dblink已被取代由fdw。 – Patrick