powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
6 сообщений из 6, страница 1 из 1
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
    #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
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
    #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
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
    #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
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
    #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
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
    #40128631
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
а вообще это баловство, лучше не изобретать велосипед и не маяться с его поддержкой, а взять что-то готовое и/или более удобное для работы
...
Рейтинг: 0 / 0
Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
    #40128633
максим_1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sayan Malakshinov, большое вам спасибо :) Абсолютно с вами согласен про взять готовый инструмент, к сожалению данные приходят уже обработанные с виртуалки, а передавать Нам весь цикл обработки не хотят, политика партии такая ))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замена запятых на перенос строки, кроме запятых, что находятся в кавычках
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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