获取 postgresql 扩展的转储
Get the dump of postgresql extension
1。是否可以获取 Postgresql 扩展的转储?
- 我有一个正在开发的扩展,假设它位于生产服务器上,还有很多脚本,例如
ext_name--1.0.1--1.0.2.sql
。
- 有没有办法,如何在不手动编写脚本文件的情况下获得最终版本的扩展
ext_name--1.0.2.sql
?
例如在文件 ext_name--1.0.0--1.0.1.sql
中:
CREATE TABLE foo(id integer, name text);
在文件 ext_name--1.0.1--1.0.2.sql
中:
ALTER TABLE foo ADD COLUMN city text;
将生成类似于转储中的代码(在文件 ext_name--1.0.2.sql
中):
CREATE TABLE foo(id integer, name text, city text);
pg_dump
通常会忽略扩展对象。我只找到了包含扩展数据的解决方案 (pg_extension_config_dump()
)。
2。为什么更新脚本不接受
COPY foo(id, name) FROM stdin;
命令。我虽然这会被传递到 psql,但 psql 会 运行 它成功。我是否必须始终编写插入以将数据放入扩展中?
3。有更新脚本包含文件的解决方案吗?
就像通过 \i
命令在纯 psql 中一样。
好的,在使用扩展程序一段时间后:
是的。您可以从扩展中删除 member_object
(https://www.postgresql.org/docs/current/static/sql-alterextension.html) 该对象将像往常一样运行,并由 pg_dump.
注册
嗯,是的,没有复制。但是 pg_dump 可以接受参数 --column-inserts 然后现有数据(甚至相当大)可以转换为文本转储中的插入,这正是我所需要的(将现有表转换为扩展安装脚本)。
我没有找到解决方案,但实际上并不适合我们的需要。将 git 中的函数单独存储以很好地查看代码中的更改是非常好的。我们的解决方案是复制它(首先在一个单独的文件中,第二个在扩展更改脚本中,这样扩展就可以在不检查 git 历史记录的情况下遍历版本)。
1。是否可以获取 Postgresql 扩展的转储?
- 我有一个正在开发的扩展,假设它位于生产服务器上,还有很多脚本,例如
ext_name--1.0.1--1.0.2.sql
。 - 有没有办法,如何在不手动编写脚本文件的情况下获得最终版本的扩展
ext_name--1.0.2.sql
?
例如在文件 ext_name--1.0.0--1.0.1.sql
中:
CREATE TABLE foo(id integer, name text);
在文件 ext_name--1.0.1--1.0.2.sql
中:
ALTER TABLE foo ADD COLUMN city text;
将生成类似于转储中的代码(在文件 ext_name--1.0.2.sql
中):
CREATE TABLE foo(id integer, name text, city text);
pg_dump
通常会忽略扩展对象。我只找到了包含扩展数据的解决方案 (pg_extension_config_dump()
)。
2。为什么更新脚本不接受
COPY foo(id, name) FROM stdin;
命令。我虽然这会被传递到 psql,但 psql 会 运行 它成功。我是否必须始终编写插入以将数据放入扩展中?
3。有更新脚本包含文件的解决方案吗?
就像通过 \i
命令在纯 psql 中一样。
好的,在使用扩展程序一段时间后:
是的。您可以从扩展中删除 member_object (https://www.postgresql.org/docs/current/static/sql-alterextension.html) 该对象将像往常一样运行,并由 pg_dump.
注册
嗯,是的,没有复制。但是 pg_dump 可以接受参数 --column-inserts 然后现有数据(甚至相当大)可以转换为文本转储中的插入,这正是我所需要的(将现有表转换为扩展安装脚本)。
我没有找到解决方案,但实际上并不适合我们的需要。将 git 中的函数单独存储以很好地查看代码中的更改是非常好的。我们的解决方案是复制它(首先在一个单独的文件中,第二个在扩展更改脚本中,这样扩展就可以在不检查 git 历史记录的情况下遍历版本)。