【发布时间】:2021-12-02 05:40:46
【问题描述】:
我正在尝试将一组 JSON 值插入到 postgres 数据库中。但我收到了这个错误:
error: malformed array literal: "{{"traits":{"belief":[],"personality":[],"physical":[]},"relationships":[]},{"traits":{"belief":[],"personality":[],"physical":[]},"relationships":[]}}"
如果我是正确的,数组字面量应该采用"{{...},{...}}" 的形式。据我所知,这是将 JSON 元素数组插入 postgres 表的正确方法。
如果有帮助,这是我的整个查询:
INSERT INTO main(prev_snippets, next_snippets, req_characters, description, requirements, prereq_events, character_effects, world_effects, character_decisions)
VALUES ('{"22","45","99"}', '{"33","22"}', '{{"traits":{"belief":[],"personality":[],"physical":[]},"relationships":[]},{"traits":{"belief":[],"personality":[],"physical":[]},"relationships":[]}}', 'cvdfgfg', NULL, NULL, NULL, NULL, NULL);
prev_snippets 和 next_snippets 是整数数组(当我弄清楚 JSON 问题时,我将使用这些整数而不是字符串),req_characters 是 JSONB 数组,description 是文本。
请告诉我如何才能使我的问题变得更好。非常感谢您的帮助。
更新:
这是表定义:
CREATE TABLE main (
id SERIAL NOT NULL UNIQUE,
PRIMARY KEY(id),
prev_snippets INTEGER[],
next_snippets INTEGER[],
req_characters JSONB[],
description TEXT NOT NULL,
requirements JSONB[],
prereq_events JSONB[],
character_effects JSONB[],
world_effects JSONB[],
character_decisions JSONB[]
);
我相信我使用的是 postgres 版本 14。
【问题讨论】:
-
什么版本的 Postgres,请问?
-
在您的问题中添加表定义,特别是列的实际声明类型。
-
您对所有数组数据类型是否 100% 确定?这通常是一个糟糕的数据库设计
-
@FrankHeikens 好点。根据此处的建议,我将所有 JSONB 数组列更改为 JSONB 列,因为它是多余的。我也可能会切换到 Mongo DB,因为这开始看起来不像是关系数据库用例了。
标签: arrays postgresql