往pgsql的json[]类型的字段中手动塞入json数组数据时,提示必须引入显式指定的数组规模是为什么?
时间: 2024-02-05 07:13:34 浏览: 231
在 PostgreSQL 中,JSON 类型的数组列需要指定数组大小。这是因为 JSON 类型的数组并不是 PostgreSQL 内置的数据类型,而是通过将 JSON 数据类型与数组数据类型结合使用来实现的。因此,需要显式指定数组大小。
当你手动向 JSON 数组列中插入数据时,如果没有指定数组大小,PostgreSQL 会提示必须引入显式指定的数组规模。要解决这个问题,你需要在插入数据之前先创建一个具有相应大小的数组,然后再将数据插入到数组中。
例如,如果你想要向名为 `mytable` 的表中的 `json_arr` 列中插入一个 JSON 数组,可以使用以下 SQL 语句:
```sql
-- 创建一个大小为 10 的 JSON 数组
SELECT ARRAY_AGG('{}'::json) FROM generate_series(1,10);
-- 将 JSON 数组插入到 mytable 表中的 json_arr 列中
INSERT INTO mytable (json_arr) VALUES ('{"{\"{}\", \"{}\", \"{}\"}","{\"{}\", \"{}\", \"{}\"}","{\"{}\", \"{}\", \"{}\"}"}');
```
其中,`ARRAY_AGG('{}'::json) FROM generate_series(1,10)` 用于创建一个大小为 10 的 JSON 数组,`generate_series(1,10)` 用于生成一个包含 1 到 10 的整数序列,`'{"{\"{}\", \"{}\", \"{}\"}","{\"{}\", \"{}\", \"{}\"}","{\"{}\", \"{}\", \"{}\"}"}'` 用于将 JSON 数组插入到 `mytable` 表中的 `json_arr` 列中。
阅读全文
相关推荐




















