我有一张表post_likes
,其中一列是帖子 ID( ),另一列是喜欢该帖子的用户uint
ID 数组( )。uint[]
如果我要从多个用户的多个表中选择信息,我该如何连接这个post_likes
表,以便对于每个用户,每个结果都有一个用户喜欢的帖子 ID 数组?
我知道一对多或多对多的存储会使这变得简单,但这就是我必须要做的。
我有一张表post_likes
,其中一列是帖子 ID( ),另一列是喜欢该帖子的用户uint
ID 数组( )。uint[]
如果我要从多个用户的多个表中选择信息,我该如何连接这个post_likes
表,以便对于每个用户,每个结果都有一个用户喜欢的帖子 ID 数组?
我知道一对多或多对多的存储会使这变得简单,但这就是我必须要做的。
CSV 的列具有格式text
(可以包括空行)date
和 JSON 字符串数组(类似于['a', 'b', 'c']
。我一直在尝试将该 CSV 复制到 PostgreSQL 表中(使用psycopg2
's copy_expert
,它只是执行给定的COPY
命令,如果这很重要)
表是用
CREATE TABLE posts(
id SERIAL PRIMARY KEY,
text TEXT NOT NULL,
created_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
rubrics jsonb[] NOT NULL
);
复制命令是
COPY posts(text, created_date, rubrics)
FROM STDIN
WITH CSV HEADER
STDIN
CSV 文件在哪里。
我得到的错误是
malformed array literal: "['a', 'b', 'c']"
DETAIL: "[" must introduce explicitly-specified array dimensions.
CONTEXT: COPY posts, line 15, column rubrics: "['a', 'b', 'c']"
我已经尝试了所有 4 种与 JSON 相关的数据类型(json
并且jsonb
有和没有[]
or [3]
),包括方括号会产生上述错误,而省略它们(rubrics jsonb NOT NULL
创建时)会产生新的错误:
invalid input syntax for type json
DETAIL: Token "'" is invalid.
CONTEXT: JSON data, line 1: ['...
COPY posts, line 15, column rubrics: "['a', 'b', 'c']"
除了手动修复要使用的 .csv{}
而不是[]
在复制之前,我还有什么办法吗?感觉就像我一样,但除了几个有点但不完全相关的问题之外,我真的找不到任何东西。
我已将表创建更改为
CREATE TABLE posts(
id SERIAL PRIMARY KEY,
text TEXT NOT NULL,
created_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
rubrics jsonb NOT NULL
);
并在 CSV 中留下一个条目进行测试,所以看起来像这样
text,created_date,rubrics
"Lorem
Ipsum
Test",2019-07-25 12:42:13,'["f", "o", "o"]'
按原样使用 CSV:
extra data after last expected column
CONTEXT: COPY posts, line 6: ""Lorem
Ipsum
Test",2019-07-25 12:42:13,'["f", "o", "o"]'"
""
数组周围的另外一对( "'["f", "o", "o"]'"
)
invalid input syntax for type json
DETAIL: Token "'" is invalid.
CONTEXT: JSON data, line 1: '...
COPY posts, line 6, column rubrics: "'[f, o, o]'"
根本没有引号(只有["f", "o", "o"]
)
extra data after last expected column
CONTEXT: COPY posts, line 6: ""Lorem
Ipsum
Test",2019-07-25 12:42:13,["f", "o", "o"]"
双引号代替单引号 ( "["f", "o", "o"]"
)
invalid input syntax for type json
DETAIL: Token "f" is invalid.
CONTEXT: JSON data, line 1: [f...
COPY posts, line 6, column rubrics: "[f, o, o]"
外双引号,内单引号 ( "['f', 'o', 'o']"
)
invalid input syntax for type json
DETAIL: Token "'" is invalid.
CONTEXT: JSON data, line 1: ['...
COPY posts, line 6, column rubrics: "['f', 'o', 'o']"
毕竟我正在使用的 Python 库有问题吗?