PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgresql - Regex разделен csv ред с потенциални кавички

Не за regexp, но работи

create or replace function split_csv(
  line text,
  delim_char char(1) = ',',
  quote_char char(1) = '"')
returns setof text[] immutable language plpythonu as $$
  import csv
  return csv.reader(line.splitlines(), quotechar=quote_char, delimiter=delim_char, skipinitialspace=True, escapechar='\\')
$$;

select *, x[4] from split_csv('field1|"field2"|field3|"22 \" lcd \| screen "'||E'\n'||'a|b', delim_char := '|') as x;
╔══════════════════════════════════════════════╤════════════════════╗
║                      x                       │         x          ║
╠══════════════════════════════════════════════╪════════════════════╣
║ {field1,field2,field3,"22 \" lcd | screen "} │ 22 " lcd | screen  ║
║ {a,b}                                        │ ░░░░               ║
╚══════════════════════════════════════════════╧════════════════════╝



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как може съхранена функция на Postgres да върне таблица

  2. Местоположение по подразбиране на базата данни PostgreSQL в Linux

  3. Как да сравните 2 последователни стойности на ред в обект с набор от резултати с помощта на python

  4. psycopg2.ProgrammingError:синтактична грешка при или близо до stdin грешка при опит за copy_from redshift

  5. Docker не разпознава директорията с данни на Postgresql