Разделить данные столбца на два столбца и вставить их в существующую таблицу в postgresql - PullRequest
0 голосов
/ 03 июня 2019

Разбить данные столбца на два столбца и вставить их в существующую таблицу в postgresql.

Email
-----
xyz@outlook.com,xyz2@outlook.com

хочу разделить, как показано ниже:

Email1 Email2
-------------
xyz@outlook.com       xyz2@outlook.com
    insert into s_mas_enrich (email_1, Email_2)
select *,
    split_part(email::TEXT,',', 1) Email_1,
    split_part(email::TEXT,',', 2) Email_2
    from s_mas_enrich 

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Используйте запрос на объединение:

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_Name есть только один целевой столбец электронной почты, но вы хотите включить оба CSV-сообщения из таблицы s_mas_enrich.

0 голосов
/ 03 июня 2019

Мы можем использовать string_to_array для завершения операции разделения, как показано ниже:

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, а не с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...