gpt4 book ai didi

postgresql - 将大量数据加载到 Postgres Hstore

转载 作者:行者123 更新时间:2023-11-29 11:16:11 24 4
gpt4 key购买 nike

hstore 文档只讨论一次一行地“插入”到 hstore 中。有没有办法批量上传 100k 行在 postgres hstore 中可能是兆字节或千兆字节。

复制命令似乎只适用于上传 csv 文件列

有人可以举个例子吗?最好是与 python/psycopg 一起工作的解决方案

最佳答案

上面的答案似乎不完整,因为如果您尝试复制多列,包括具有 hstore 类型的列并使用逗号分隔符,COPY 会变得困惑,例如:

$ cat test
1,a=>1,b=>2,a
2,c=>3,d=>4,b
3,e=>5,f=>6,c

create table b(a int4, h hstore, c varchar(10));
CREATE TABLE;
copy b(a,h,c) from 'test' CSV;
ERROR: extra data after last expected column
CONTEXT: COPY b, line 1: "1,a=>1,b=>2,a"

类似地:

copy b(a,h,c) from 'test' DELIMITER ',';
ERROR: extra data after last expected column
CONTEXT: COPY b, line 1: "1,a=>1,b=>2,a"

不过,这可以通过导入为 CSV 文件并引用要导入到 hstore 中的字段来解决:

$ cat test
1,"a=>1,b=>2",a
2,"c=>3,d=>4",b
3,"e=>5,f=>6",c

copy b(a,h,c) from 'test' CSV;
COPY 3
select h from b;
h
--------------------
"a"=>"1", "b"=>"2"
"c"=>"3", "d"=>"4"
"e"=>"5", "f"=>"6"
(3 rows)

仅允许以 CSV 格式引用,因此需要以 CSV 格式导入,但您可以使用 COPY 的 DELIMITER 和 QUOTE 参数将字段分隔符和引号字符显式设置为非“,”和“””值。

关于postgresql - 将大量数据加载到 Postgres Hstore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com