有两种可能的数据格式 - 文本或二进制。默认是文本格式 - 这意味着,只有服务器 <-> 客户端编码转换(或者当客户端和服务器使用相同的编码时没有)。文本格式非常简单 - 微不足道 - 所有结果数据都转换为人类可读的文本,然后发送给客户端。像 bytea 这样的二进制数据也被转换为人类可读的文本——使用十六进制或 Base64 编码。输出很简单。文档中没有什么可描述的
postgres=# select current_date;
date
────────────
2013-10-27
(1 row)
在这种情况下 - 服务器向客户端发送字符串“2013-10-27”。前四个字节是长度,其他字节是数据。
输入有点困难,因为您可以将数据与查询分开 - 取决于您使用的 API。因此,如果您使用最简单的 API - 那么 Postgres 期望 SQL 语句与数据一起使用。一些复杂的 API 需要将 SQL 语句和数据分开。
另一方面,由于任何数据类型的特定格式都不同,因此使用二进制格式非常困难。任何 PostgreSQL 数据类型都有两个函数——发送和接收。这些函数用于向输出消息流发送数据和从输入消息流中读取数据。类似的功能用于转换为/从纯文本(输出/输入功能)。一些客户端驱动程序能够从 PostgreSQL 二进制格式转换为主机二进制格式。
一些信息: