sql >> データベース >  >> RDS >> PostgreSQL

Postgresql-潜在的な引用符を含む正規表現分割csv行

    正規表現についてではありませんが、機能します

    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. グループの結果はサブグループになります

    2. SQLServerの変更回復モデル

    3. ノードアプリがしばらく動作してクラッシュするのはなぜですか(heroku)?

    4. Xグループで最大のNレコードを選択する