PostgreSQL pg_dump没有模式名称



pg_dump版本 10.3 开始将模式名称显式添加到表名称中。那么过去是什么

INSERT INTO table (id) VALUES (1);

现在是

INSERT INTO public.table (id) VALUES (1);

你怎么能把它关掉?我的问题是,我将其转储到没有模式名称的mariadb中。

如果只是您关心的 INSERT 语句,就像我一样,那么我相信这是安全的,并且会从您的表中删除"公共"架构。

sed -i -e 's/^INSERT INTO public./INSERT INTO /' <filename.sql>

它会就地修改文件,所以要小心。

我也搜索了这个切换器,它不存在。添加此行为是因为 -https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path

在我的工作中,我现在使用转储的新变体,并在事务中重命名模式。

如果你安装了Docker,你可以做一个技巧:

docker run -it postgres:10.2 pg_dump postgresql://user:pass@host/database
当然,

这只是 linux 的决定(不是 postgres(,但我想它会帮助你

sed -i 's/public.//g' your_dmp_file

附言我没有检查这个,也许你应该修复它

在 postgresql 控制台(连接到数据库(中执行以下命令:

set search_path to public;

相关内容

  • 没有找到相关文章

最新更新