Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列数据拆分为两列&;将其插入到postgresql中的现有表中_Postgresql_Split - Fatal编程技术网

将列数据拆分为两列&;将其插入到postgresql中的现有表中

将列数据拆分为两列&;将其插入到postgresql中的现有表中,postgresql,split,Postgresql,Split,将列数据拆分为两列并将其插入到postgresql中的现有表中 Email ----- xyz@outlook.com,xyz2@outlook.com 要按如下方式进行隔离: Email1 Email2 ------------- xyz@outlook.com xyz2@outlook.com 使用联合查询: insert into Table_Name (Email) select split_part(email::TEXT,',', 1) from s_mas_enri

将列数据拆分为两列并将其插入到postgresql中的现有表中

Email
-----
xyz@outlook.com,xyz2@outlook.com
要按如下方式进行隔离:

Email1 Email2
-------------
xyz@outlook.com       xyz2@outlook.com
使用联合查询:

insert into Table_Name (Email)
select split_part(email::TEXT,',', 1) from s_mas_enrich
union all
select split_part(email::TEXT,',', 2) from s_mas_enrich;

这假设您的目标表
table\u Name
只有一个目标电子邮件列,但您希望包含
s\u mas\u
表中的两个CSV电子邮件。

我们可以使用
字符串到数组来完成拆分操作,如下所示:

postgres=# select string_to_array('yz@outlook.com,xyz2@outlook.com',',');
          string_to_array          
-----------------------------------
 {yz@outlook.com,xyz2@outlook.com}
(1 row)

postgres=# select (string_to_array('yz@outlook.com,xyz2@outlook.com',','))[1] as email1;
     email1     
----------------
 yz@outlook.com
(1 row)

postgres=# select (string_to_array('yz@outlook.com,xyz2@outlook.com',','))[2] as email2;
      email2      
------------------
 xyz2@outlook.com
(1 row)

postgres=# select (string_to_array('yz@outlook.com,xyz2@outlook.com',','))[1] as email1,(string_to_array('yz@outlook.com,xyz2@outlook.com',','))[2] as email2;
     email1     |      email2      
----------------+------------------
 yz@outlook.com | xyz2@outlook.com

postgres=# insert into table_name (email_1, email_2)
select
    (string_to_array(email::varchar,','))[1],
    (string_to_array(email::varchar,','))[2]
from
    s_mas_enrich

注意:PostgreSQL的数组索引从1开始,而不是零。

插入表\u名称(Email1,Email2)
已尝试,错误:不存在关系“表\u名称”的“Email1”列。您的问题不明确。如果要将其插入两列,首先必须在表中添加这些列,对吗?
postgres=# select string_to_array('yz@outlook.com,xyz2@outlook.com',',');
          string_to_array          
-----------------------------------
 {yz@outlook.com,xyz2@outlook.com}
(1 row)

postgres=# select (string_to_array('yz@outlook.com,xyz2@outlook.com',','))[1] as email1;
     email1     
----------------
 yz@outlook.com
(1 row)

postgres=# select (string_to_array('yz@outlook.com,xyz2@outlook.com',','))[2] as email2;
      email2      
------------------
 xyz2@outlook.com
(1 row)

postgres=# select (string_to_array('yz@outlook.com,xyz2@outlook.com',','))[1] as email1,(string_to_array('yz@outlook.com,xyz2@outlook.com',','))[2] as email2;
     email1     |      email2      
----------------+------------------
 yz@outlook.com | xyz2@outlook.com

postgres=# insert into table_name (email_1, email_2)
select
    (string_to_array(email::varchar,','))[1],
    (string_to_array(email::varchar,','))[2]
from
    s_mas_enrich