如何更改 postgres 中数组的默认标识符 {..}?
How to change default identifier {..} for arrays in postgres?
我有大型 .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) 的员工。
最佳实践:
- 将字段作为 .csv 中的文本
- 更新专栏并替换您不需要的内容。
- 使用
alter table
将您的列转换为 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,',');
我有大型 .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) 的员工。
最佳实践:
- 将字段作为 .csv 中的文本
- 更新专栏并替换您不需要的内容。
- 使用
alter table
将您的列转换为 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,',');