我已经使用COPY命令创建了一些CSV文件批量导入Postgres 9.2,但我遇到了问题,因为Postgres表中的一个字段是数组数据类型。
是否可以将带有COPY的数据导入数组数据类型,我有整数和文本数组?
CREATE TABLE artist (
id integer NOT NULL,
name text NOT NULL,
realname text,
urls text[],
namevariations text[],
aliases text[],
releases integer[],
profile text,
members text[],
groups text[],
data_quality text
);
答案 0 :(得分:3)
这样的事情应该有效:
id,data
1,{1,2,3}
2,{4,5,6}
这假设数值。
如果您的数据包含的字符值又可以包含分隔符(在我的示例中为,
),则需要将每个值括在双引号中。
id,data
1,{foo,bar}
2,{"foo,bar", "bar,foo"}
第二行将字符串&f 39,foo,bar'和' bar,foo'作为数组中的两个元素
修改
使用逗号作为分隔符时,必须引用数组值,例如:
id,data
1,"{1,2,3}"
2,"{4,5,6}"
处理字符串时,需要在数组中使用单引号:
id,data
1,"{foo,bar}"
2,"{'foo,bar', 'bar,foo'}"
如果您使用不同的分隔符,则不需要引用,例如|
答案 1 :(得分:0)
进行测试,例如:
create table test (id int, intarr int[], textarr text[]);
insert into test values
(1, array[1,2], array['a','b']);
copy test to 'c:\data\test.txt';
truncate test;
copy test from 'c:\data\test.txt';
select * from test;
并检查文件的格式:
1 {1,2} {a,b}