database - 从数据库中获取大字符串
问题描述
我的 postgresql 数据库中有大字符串。这是一个 base64 编码的 mp3,我必须选择具有该大字符串的列并通过一次选择获取所有数据。如果我写正常选择
SELECT * FROM public.song_data WHERE id=1;
它只会从该字符串返回 204 kB 并且该字符串有 2.2 MB。
此外,datagrip 仅显示该字符串中的 204 kB 数据。有没有一种方法可以通过一次选择来获取所有数据?
解决方案
真奇怪。你确定你的数据没有被修剪到某个地方吗?您可以使用功能length
检查实际尺寸。
postgres=# select length('aaa');
┌────────┐
│ length │
╞════════╡
│ 3 │
└────────┘
(1 row)
2 MB 对于 Postgres 来说不算什么,但一些客户端(或协议)可能会出现问题。有时需要使用函数lo_import
并lo_export
作为客户端/协议限制的解决方法。要从表中选择数据,您应该使用SELECT
语句。没有其他办法。从理论上讲,您可以将任何字符串转换为大对象,然后通过函数lo_export
,您可以使用 LO 特殊协议从数据库中下载这个大对象。对于 2MB,我认为没有必要。
请尝试检查您的数据是否正确存储到 postgres。文本的理论限制,varchar 为 1GB。实际限制值较小 - 大约 100MB。它的价值明显高于 2MB。
Postgres 具有二进制数据的特殊数据类型 - bytea
. 默认情况下,它会与十六进制代码进行对话,并且也支持 base64 编码。
推荐阅读
- python - Matplotlib 模块在 Ubuntu 18.04 的 Python3.6.9 中未找到错误
- python-3.x - Python:如何通过 Selenium 使用 find_element_by_css_selector
- python-3.x - 如何改进决策树回归器中的负 R 平方
- amazon-web-services - 通过 HTTP 请求执行 AWS Cloud Watch API
- php - 如何在 XAMPP 中调试 MySQL 错误“MySQL 意外关闭”
- rust - 如何使用 serde 从字符串中解析 JSON?
- flutter - 颤动不同大小的gridview项目
- php - 没有智能按钮的 Vue/Laravel PayPal 集成
- arrays - 使用 $out 来满足此类需求的正确原型是什么?
- c# - 出现错误-“generator.exe”退出,代码为 -532462766”-RazorPay 集成