可变多维PostgreSQL列

slhcrj9b  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(171)

我一直得到以下错误:'多维数组必须具有具有匹配维度的数组表达式'。插入到列中的数据的维度不同,因此不可能将表达式与维度匹配。例如,该列可以具有以下输入。我使用Python并将数据插入PostgreSQL。
如何编写脚本:

CREATE TABLE IF NOT EXISTS "participants" (
    "id"        BIGSERIAL NOT NULL PRIMARY KEY
    "participants"      VARCHAR ARRAY);

script = 'INSERT INTO participants (id, participants) VALUES (%s, %s)'

record = [1, [['Tom'], ['Steve', 'Ron'], ['Cheryl', 'Rick', 'Sue']]
record = [2, [['Jane', 'Frank, 'Lin']]
record = [3, [['Jose', 'Rhonda'], ['Stephanie', 'Joe']]
record = [4, [['Pedro', 'Sandra']]

结果应如下:

| id       |                        participants                     |
| -------- | ------------------------------------------------------- |
| 1        | {{'Tom'}, {'Steve', 'Ron'}, {'Cheryl', 'Rick', 'Sue'}}  |
| 2        | {{'Jane', 'Frank, 'Lin'}}                               |
| 3        | {{'Jose', 'Rhonda'}, {'Stephanie', 'Joe'}}              |
| 4        | {{'Pedro', 'Sandra'}}                                   |
uttx8gqw

uttx8gqw1#

看看这个:

CREATE TABLE IF NOT EXISTS participants (
    id        BIGSERIAL NOT NULL PRIMARY KEY,
    participants      json);

insert into participants values
(1, '[["Tom"], ["Steve", "Ron"], ["Cheryl", "Rick", "Sue"]]'::json),
(2, '[["Jane", "Frank", "Lin"]]'::json),
(3, '[["Jose", "Rhonda"], ["Stephanie", "Joe"]]'::json),
(4, '[["Pedro", "Sandra"]]'::json);

Fiddle
正如Sahap所说的,json或jsonb可以用来不满足尺寸限制。然而,这样做你将无法使用一些有用的功能,如unnest。如果你想把它转换成数组以供实际使用,有很棒的内容。你可以从this one开始。但是,您可能仍然需要自定义它们。

相关问题