gpt4 book ai didi

mysql - 使用外部数据包装器在 PostgreSQL 中删除外部模式

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:44 25 4
gpt4 key购买 nike

在 PostgreSQL 中使用 MySQL 外部数据包装器有一个很好的技巧,可以让您快速告诉 Postgres 关于 MySQL 数据库中的所有表。具体如下:

从服务器 mysql_server 导入外部模式 my_favourite_database 到 public;

没有模拟DROP FOREIGN SCHEMA。尽管 DROP FOREIGN TABLE 可以针对每个表逐个完成,但这也需要知道外部数据库中所有表的名称。我也不确定这个命令实际上是 DROP 外部数据库中的表还是只是与它的连接。

如何自动解决这个问题。

我想同样的方法适用于 PostgreSQL 中的任何外部数据包装器

最佳答案

drop foreign table 只删除“本地”外部表定义,而不是远程服务器中的表。

你可以用一个简短的 PL/pgSQL block 删除所有外部表:

do
$$
declare
l_rec record;
begin
for l_rec in (select foreign_table_schema, foreign_table_name
from information_schema.foreign_tables) loop
execute format('drop foreign table %I.%I', l_rec.foreign_table_schema, l_rec.foreign_table_name);
end loop;
end;
$$

这将删除当前数据库中的所有 外部表。如果您只想将其限制为某些表,您可以相应地调整 for 循环中的查询,例如通过只为特定的外部服务器选择那些 where foreign_server_name = 'mysql'

我还会将所有这些外部表放入一个单独的模式中,以将它们与“常规”表分开 - 但这是个人品味的问题。

关于mysql - 使用外部数据包装器在 PostgreSQL 中删除外部模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40728788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com