Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замена запятых на перенос строки, кроме запятых, что находятся в кавычках / 6 сообщений из 6, страница 1 из 1
21.01.2022, 23:43
    #40128626
максим_1991
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare
csv_clob clob:='20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Video,OLV,Common,"127892-Parents,-Multi-roll_20_sec-R1",mobile,361,132,11469.0,504,0,312,0.0,341
20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Direct,Banner,Common,"127891-Parents,-Banner-R3_31",mobile,248,49,11205.0,341,0,192,0.0,234';
l_pars_row varchar2(4000);
l_row number;
l_pars_row_res varchar2(4000);
begin
l_row:=regexp_count(csv_clob,'.+',1,'m');
--for i in 1..l_row loop
     l_pars_row:=regexp_substr(csv_clob,'^.*',1,1,'m');
           l_pars_row_res:=regexp_replace(l_pars_row,'[,]+|"([^"]|",")+"',chr(13)||chr(10));
dbms_output.put_line(l_pars_row_res);
--END LOOP;
END;



Результат :
20220111Teenie_Beanie_Boos_mcd_landingYandex_VideoOLVCommonmobile36113211469.050403120.0341

Потерялся : "127892-Parents,-Multi-roll_20_sec-R1"
Как переписать регулярку, что бы не пропускал сабстринг в кавыычках '[,]+|"([^"]|",")+"' ?
...
Рейтинг: 0 / 0
22.01.2022, 00:40
    #40128628
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
максим_1991,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
  csv_clob clob:='20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Video,OLV,Common,"127892-Parents,-Multi-roll_20_sec-R1",mobile,361,132,11469.0,504,0,312,0.0,341
20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Direct,Banner,Common,"127891-Parents,-Banner-R3_31",mobile,248,49,11205.0,341,0,192,0.0,234';
  l_pars_row varchar2(4000);
  l_row number;
  l_pars_row_res varchar2(4000);
begin
  l_row:=regexp_count(csv_clob,'.+',1,'m');
  for i in 1..l_row loop
     dbms_output.put_line('========= Line #'||i||' ============');
     l_pars_row:=regexp_substr(csv_clob,'^.*',1,1,'m');
     l_pars_row_res := regexp_replace(l_pars_row,'([^",]+|"[^"]+"),','\1'||chr(13));
     dbms_output.put_line(l_pars_row_res);
  END LOOP;
END;
/

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
========= Line #1 ============
20220111
Teenie_Beanie_Boos_mcd_landing
Yandex_Video
OLV
Common
"127892-Parents,-Multi-roll_20_sec-R1"
mobile
361
132
11469.0
504
0
312
0.0
341
========= Line #2 ============
20220111
Teenie_Beanie_Boos_mcd_landing
Yandex_Video
OLV
Common
"127892-Parents,-Multi-roll_20_sec-R1"
mobile
361
132
11469.0
504
0
312
0.0
341

...
Рейтинг: 0 / 0
22.01.2022, 00:45
    #40128629
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
подправил:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
  csv_clob clob:='20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Video,OLV,Common,"127892-Parents,-Multi-roll_20_sec-R1",mobile,361,132,11469.0,504,0,312,0.0,341
20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Direct,Banner,Common,"127891-Parents,-Banner-R3_31",mobile,248,49,11205.0,341,0,192,0.0,234';
  l_pars_row varchar2(4000);
  l_row number;
  l_pars_row_res varchar2(4000);
begin
  l_row:=regexp_count(csv_clob,'$',1,'m');
  for i in 1..l_row loop
     dbms_output.put_line('========= Line #'||i||' ============');
     l_pars_row:=regexp_substr(csv_clob,'^.*',1,i,'m');
     l_pars_row_res := regexp_replace(l_pars_row,'([^",]+|"[^"]+"),','\1'||chr(13));
     dbms_output.put_line(l_pars_row_res);
  END LOOP;
END;
/

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
========= Line #1 ============
20220111
Teenie_Beanie_Boos_mcd_landing
Yandex_Video
OLV
Common
"127892-Parents,-Multi-roll_20_sec-R1"
mobile
361
132
11469.0
504
0
312
0.0
341
========= Line #2 ============
20220111
Teenie_Beanie_Boos_mcd_landing
Yandex_Direct
Banner
Common
"127891-Parents,-Banner-R3_31"
mobile
248
49
11205.0
341
0
192
0.0
234

...
Рейтинг: 0 / 0
22.01.2022, 00:56
    #40128630
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
и с учетом экранированных кавычек
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
  csv_clob clob:='20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Video,OLV,Common,"127892-Parents,-Multi-roll_20_sec-R1",mobile,361,132,11469.0,504,0,312,0.0,341
20220111,Teenie_Beanie_Boos_mcd_landing,Yandex_Direct,Banner,Common,"127891-Parents,-""Banner""-R3_31",mobile,248,49,11205.0,341,0,192,0.0,234';
  l_pars_row varchar2(4000);
  l_row number;
  l_pars_row_res varchar2(4000);
begin
  l_row:=regexp_count(csv_clob,'$',1,'m');
  for i in 1..l_row loop
     dbms_output.put_line('========= Line #'||i||' ============');
     l_pars_row:=regexp_substr(csv_clob,'^.*',1,i,'m');
     l_pars_row_res := regexp_replace(l_pars_row,'([^",]+|"([^"]|"")+"),','\1'||chr(13));
     dbms_output.put_line(l_pars_row_res);
  END LOOP;
END;
/

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
========= Line #1 ============
20220111
Teenie_Beanie_Boos_mcd_landing
Yandex_Video
OLV
Common
"127892-Parents,-Multi-roll_20_sec-R1"
mobile
361
132
11469.0
504
0
312
0.0
341
========= Line #2 ============
10220111
Teenie_Beanie_Boos_mcd_landing
Yandex_Direct
Banner
Common
"127891-Parents,-""Banner""-R3_31"
mobile
248
49
11205.0
341
0
192
0.0
234

...
Рейтинг: 0 / 0
22.01.2022, 00:58
    #40128631
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
а вообще это баловство, лучше не изобретать велосипед и не маяться с его поддержкой, а взять что-то готовое и/или более удобное для работы
...
Рейтинг: 0 / 0
22.01.2022, 01:33
    #40128633
максим_1991
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
Sayan Malakshinov, большое вам спасибо :) Абсолютно с вами согласен про взять готовый инструмент, к сожалению данные приходят уже обработанные с виртуалки, а передавать Нам весь цикл обработки не хотят, политика партии такая ))
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замена запятых на перенос строки, кроме запятых, что находятся в кавычках / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]