PostgreSQL多值SELECT查询允许的最大查询长度是多少?



上下文是,我正在编写一个脚本发送加载/插入查询到postgres服务器插入行到一个存在的表。我读了很多关于这个话题的资源,关于选择的方法,在"COPY"和多值SELECT查询。我想知道什么是PostgreSQL多值SELECT查询接受的最大查询长度?我正在动态地构建一个SQL查询,将其发送到postgres服务器,并且我无法事先知道在"值"之后有多少行。我可能有。

另一个问题,如果我将表存储在文件中并使用"COPY"加载文件内容,是否对文件有任何限制?限制在行,字节,…

?我尝试了两种方法,使用多值SELECT查询和"COPY"查询它们都对我有用,但我需要更多地了解它们各自的局限性。我搜索了一下,我发现对于一个简单的查询,限制是1GB。这个限制适用于多值选择吗?

我找不到任何"COPY"的限制。查询,所以我也在寻找这个信息。

提前感谢您!

编辑:

我所说的"多值选择"是什么意思?查询为:

SELECT INTO "TABLE" VALUES (Column 1, Column 2), (Column 1, Column 2), (Column 1, Column 2).. ;

PostgreSQL前端/后端协议支持的最大消息长度是1GB。如文档所述:

消息的第一个字节标识消息类型,接下来的四个字节指定消息其余部分的长度(该长度计数包括消息本身,但不包括消息类型字节)。

但是你很可能在达到这个极限之前就遇到麻烦了。

如果你打算在PostgreSQL中加载大量数据,甚至不要考虑使用多行INSERT语句。我们可以用COPY。使用COPY ... FROM STDIN,您可以在单个语句中加载任意多的数据,因为您可以通过网络以块的形式发送数据。对于COPY ... FROM 'file',对文件的大小没有限制。

最新更新