PostgreSQL:如何将数组中的值插入表中

时间:2014-08-23 05:09:02

标签: sql arrays postgresql

例如,

myelems 是我的表

create table myelems (id int,element text)

如果我有一个数组

ARRAY['A','B','C']

然后如何将上述数组中的插入到我的表 myelems 中?
即,

 id|element 
---+-------
 1 |A
 2 |B
 3 |C

2 个答案:

答案 0 :(得分:0)

试试这个

insert into myelems select row_number() OVER () AS rn,* from 
(select unnest(Array['A','B','C'])) as t

答案 1 :(得分:0)

假设默认情况下ID是从序列生成的,您可以使用:

INSERT INTO myelms(myelms) 
SELECT UNNEST(ARRAY['A','B','C'])

但是,如果您没有序列并且需要指定ID,则可以使用两个不需要来插入数据。

INSERT INTO myelms(id,myelms)
SELECT UNNEST(ARRAY[1,2,3]),UNNEST(ARRAY['A','B','C'])

使用第二个选项要求你在两个选项中都有相同数量的元素,否则你将得到两者的笛卡尔积,这将产生你不想要的数据。当然,您需要确保ID已经存在。

ID通常应该从序列生成,因为必须创建自己的ID可能会导致问题和重复。由于元素旁边没有其他列,我将假设ID是您的主键,并且所有键都必须是唯一的。