我有很大的.csv文件,其中包含带有[..]作为标识符的数组。显然,postgres的数组默认为{..}。如何更改它以正确,快速地导入它们?我不应该配置.csv文件。在下面的示例中,我们的数组为genres
。
示例:
create table title_basics (
tconst text primary key,
titleType text not null,
primaryTitle text not null,
genres text ARRAY
);
copy title_basics(tconst,titleType,primaryTitle,genres)
from 'C:\....\title_basics.csv' delimiter ',' csv header;
数据集示例:
tconst,titleType,primaryTitle,genres
t0001,movie,Miss Jerry,"[""Action"",""Comedy""]"
您无法更改数组的默认括号类型,但是可以在输入到达数据库之前对其进行更改。但是,您有责任确保所使用的方法可靠。
例如:
COPY title_basics(tconst, titletype, primarytitle, genres)
FROM PROGRAM $$powershell -Command "(gc C:\....\title_basics.csv) -replace '\[','{' -replace '\]','}'"$$
DELIMITER ',' CSV HEADER;
披露:我是EnterpriseDB(EDB)员工。
最佳做法:
alter table
将您的列转换为表格。下面的示例代码
create table title_basics (
...
genres text
);
copy title_basics(tconst,...,genres)
from 'C:...\title_basics.csv' delimiter ',' csv header;
update title_basics set genres=replace(genres,'"','');
update title_basics set genres=replace(genres,'[','');
update title_basics set genres=replace(genres,']','');
alter table title_basics
alter genres type text[] using string_to_array(genres,',');