如何转储&;是否以自定义二进制格式还原postgresql类型?

如何转储&;是否以自定义二进制格式还原postgresql类型?,sql,postgresql,Sql,Postgresql,对于postgresql 9.3或更高版本 如果我使用以下内容创建类型: CREATE TYPE x(INPUT=x_in,OUTPUT=x_out,SEND=x_send,RECEIVE=x_receive,...); 然后,对于所有选择和从字符串强制转换,使用所需的x_in和x_out。但是,我的类型有时可能包含与用户无关的其他信息-因此我不应该在x_out中显示它,但是如果数据库被转储/还原,则应保留额外的信息 我曾尝试定义SEND和RECEIVE,如果我直接调用它们,它们会起作用,但我

对于postgresql 9.3或更高版本

如果我使用以下内容创建类型:

CREATE TYPE x(INPUT=x_in,OUTPUT=x_out,SEND=x_send,RECEIVE=x_receive,...);
然后,对于所有选择和从字符串强制转换,使用所需的
x_in
x_out
。但是,我的类型有时可能包含与用户无关的其他信息-因此我不应该在
x_out
中显示它,但是如果数据库被转储/还原,则应保留额外的信息

我曾尝试定义
SEND
RECEIVE
,如果我直接调用它们,它们会起作用,但我没有成功地强制
pg_dump
在创建转储时使用它们

二进制转储创建/恢复:

 pg_dump -Fc db --table t > dump.bin
 pg_restore -d db -Fc dump.bin

注意:如果我在标准的
x_out
中显示附加数据,那么转储和所有内容都可以,但是有一些第三方工具对格式感到困惑
pg_dump
-Fc
标志是自定义格式:它只是二进制的,因为它使用压缩。恐怕这与自定义类型的外部二进制表示无关。如果此信息与用户无关,则可能不必出现在创建数据的INSERT或COPY语句中。那为什么pg_dump会包括它呢?pg_转储输出在概念上只是用户从头开始重新创建db时输入的SQL。与用户无关,但如果在转储/恢复周期中丢失,程序的行为可能会有所不同。我目前的想法是:更改默认的
x_out
函数以反映所有数据,并为用户访问他通常感兴趣的部分提供一些方便的方法