从pg_dump版本10.3开始,已经明确将模式名称添加到表名中。因此,以前的内容:
INSERT INTO table (id) VALUES (1);
现在是
INSERT INTO public.table (id) VALUES (1);
你如何关闭它?我的问题是,我要将其转储到一个没有架构名称的mariadb中。
从pg_dump版本10.3开始,已经明确将模式名称添加到表名中。因此,以前的内容:
INSERT INTO table (id) VALUES (1);
现在是
INSERT INTO public.table (id) VALUES (1);
你如何关闭它?我的问题是,我要将其转储到一个没有架构名称的mariadb中。
如果你只关心INSERT语句,就像我一样,那么我相信这是安全的,并且会从你的表中删除“public”模式。
sed -i -e 's/^INSERT INTO public\./INSERT INTO /' <filename.sql>
docker run -it postgres:10.2 pg_dump postgresql://user:pass@host/database
pg_dump: 服务器版本:12.2;pg_dump 版本:10.2 (Debian 10.2-1.pgdg90+1) pg_dump: 中止,因为服务器版本不匹配
- wutzebaer当然这只是Linux的决定(而不是Postgres),但我想它会对你有所帮助。
sed -i 's/public.//g' your_dmp_file
顺便说一下,我没有检查过这个,也许你应该修复一下
set search_path to public;