Thread View: pl.comp.lang.perl
4 messages
4 total messages
Started by =?UTF-8?B?SmFyb3
Thu, 21 Mar 2013 12:44
Dopasowanie do komentarzy w skryptach SQL przy pomocy wyrażenia regularnego
Author: =?UTF-8?B?SmFyb3
Date: Thu, 21 Mar 2013 12:44
Date: Thu, 21 Mar 2013 12:44
28 lines
898 bytes
898 bytes
Witam ponownie, Potrzebuję wyrażenia regularnego, za pomocą którego mógłbym usunąć komentarze w skryptach SQL. Generalnie rzeczony regex powinien dopasowywać się do ciągu znaków, który: 1. zaczyna się od "--" i kończy wraz z końcem linii; 2. nie jest częścią napisu otoczonego apostrofami "'" (z uwzględnieniem escape'owania tychże w stylu a) PostgreSQL "\'" b) Oracle "''") Spełnienie pierwszego warunku oczywiście jest prościutkie, drugiego zdecydowanie przekracza moje możliwości :(. Próbowałem skorzystać z Regexp::Common ale ten wykłada się już na takim banalnym zapytaniu jak: select '--this is not a sql comment!' from dual; I tu prośba o pomoc :). -- Pozdrawiam Jarek Lubczyński (eljot<NULL>90125 at gmail dot com) Nawiasy trójkątne z zawartością zbędne są There are 10 kinds of people: Those who understand binary and those who don't
Re: Dopasowanie do komentarzy w skryptach SQL przy pomocy wyrażenia regularnego
Author: hubert depesz lu
Date: Thu, 21 Mar 2013 15:46
Date: Thu, 21 Mar 2013 15:46
29 lines
1329 bytes
1329 bytes
On 2013-03-21, Jarosław Lubczyński <guess@who.com.pl> wrote: > Potrzebuję wyrażenia regularnego, za pomocą którego mógłbym usunąć > komentarze w skryptach SQL. Generalnie rzeczony regex powinien > dopasowywać się do ciągu znaków, który: > 1. zaczyna się od "--" i kończy wraz z końcem linii; > 2. nie jest częścią napisu otoczonego apostrofami "'" (z uwzględnieniem > escape'owania tychże w stylu a) PostgreSQL "\'" b) Oracle "''") > > Spełnienie pierwszego warunku oczywiście jest prościutkie, drugiego > zdecydowanie przekracza moje możliwości :(. Próbowałem skorzystać z > Regexp::Common ale ten wykłada się już na takim banalnym zapytaniu jak: > > select '--this is not a sql comment!' from dual; to jest możliwe, ale powtaje pytanie: a po co? chodzi o to, że może da się to prościej załatwić. może np. jest to wynik działania jakiegoś programu i da się to inaczej rozwiązać. depesz p.s. \' i '' to nie są escape'owania w stylu "postgresql" i "oracle". pierwsze jest wzięte z c, a drugie ze standardu sql. PostgreSQL supportuje obie wersje, przy czym \' działa (bez warningów) tylko w E-literałach. -- The best thing about modern society is how easy it is to avoid contact with it. http://depesz.com/
Re: Dopasowanie do komentarzy w skryptach SQL przy pomocy wyrażenia regularnego
Author: =?UTF-8?B?SmFyb3
Date: Thu, 21 Mar 2013 22:16
Date: Thu, 21 Mar 2013 22:16
74 lines
3263 bytes
3263 bytes
W dniu 2013-03-21 15:46, hubert depesz lubaczewski pisze: > On 2013-03-21, JarosÅaw LubczyÅski <guess@who.com.pl> wrote: >> PotrzebujÄ wyrażenia regularnego, za pomocÄ którego mógÅbym usunÄ Ä >> komentarze w skryptach SQL. Generalnie rzeczony regex powinien >> dopasowywaÄ siÄ do ciÄ gu znaków, który: >> 1. zaczyna siÄ od "--" i koÅczy wraz z koÅcem linii; >> 2. nie jest czÄÅciÄ napisu otoczonego apostrofami "'" (z uwzglÄdnieniem >> escape'owania tychże w stylu a) PostgreSQL "\'" b) Oracle "''") >> >> SpeÅnienie pierwszego warunku oczywiÅcie jest proÅciutkie, drugiego >> zdecydowanie przekracza moje możliwoÅci :(. PróbowaÅem skorzystaÄ z >> Regexp::Common ale ten wykÅada siÄ już na takim banalnym zapytaniu jak: >> >> select '--this is not a sql comment!' from dual; > > to jest możliwe, ale powtaje pytanie: a po co? chodzi o to, że może da > siÄ to proÅciej zaÅatwiÄ. może np. jest to wynik dziaÅania jakiegoÅ > programu i da siÄ to inaczej rozwiÄ zaÄ. ZmajstrowaÅem egzekutora skryptów sql (takich solidnie obkomentowanych też), który nie potrzebuje do szczÄÅcia ani klienta bazy danych ani tym bardziej natywnego parsera, wspóÅpracuje (póki co na razie, ale ze Åwietlanymi perspektywami na rozwój w miarÄ potrzeby) z Oracle, PostgreSQL i Sybase ASA, grzecznie przepycha do serwera polecenia z usuniÄtymi komentarzami, ale niestety przy uruchamianiu zrzutu z bazy wyÅożyÅ siÄ na kolumnach typu znakowego z magicznym '--' w Årodku... Moja skleroza podpowiada mi, że jakiÅ czas temu ÅciÄ gnÄ Åem takiego regexpa (a wÅaÅciwie gotowego s///) z Sieci, miaÅ z kilometr dÅugoÅci, ale *dziaÅaÅ*. Niestety jakoÅ nie mogÄ siÄ teraz do niego dogrzebaÄ, a i Wujek Google dziwnie rozgadaÅ siÄ nie na temat :). W CPAN'ie znalazÅem tylko wspomniane Regexp::Common::Comment, zajrzaÅem w gÅÄ b i wyszÅo mi, że regexp dla SQLa nie na prawa dziaÅaÄ poprawnie w moim przypadku (nie obsÅuguje apostrofów w ogóle). > > depesz > > p.s. \' i '' to nie sÄ escape'owania w stylu "postgresql" i "oracle". > pierwsze jest wziÄte z c, a drugie ze standardu sql. Prawda :) > PostgreSQL > supportuje obie wersje, przy czym \' dziaÅa (bez warningów) tylko > w E-literaÅach. > No, dla PostgreSQL'a ostatni raz testowaÅem to zachowanie chyba na starożytnej dzisiaj wersji 7.4 (i zdaje siÄ wtedy dziaÅaÅo tylko "\'") a teraz wersja 9.1 akurat na zÅoÅÄ zbiesiÅa misie - dzisiaj już nie sprawdzÄ. Oracle 11 i ASA 12 faktycznie akceptujÄ tylko standardowe ''. Aha - czÅowiek uczy siÄ caÅe życie - grzebiÄ c dziÅ po Sieci dowiedziaÅem siÄ, że można (a ponoÄ nawet należy) w skryptach SQL stosowaÄ C-cowe komentarze (nawet w postaci wieloliniowych bloków) otoczone /* ... */ (sprawdziÅem na Oracle Worksheet i ASA ISQL, można) wiÄc regexp powinien byÄ gotowy przynajmniej na /* ... */ w pojedynczej linii. Aha, teraz znalazÅem potencjalne rozwiÄ zania w zakonie Perla, np. http://www.perlmonks.org/?node_id0483 pewno z rana przetestujÄ. -- Pozdrawiam Jarek LubczyÅski (eljot<NULL>90125 at gmail dot com) Nawiasy trójkÄ tne z zawartoÅciÄ zbÄdne sÄ There are 10 kinds of people: Those who understand binary and those who don't
Re: Dopasowanie do komentarzy w skryptach SQL przy pomocy wyrażenia regularnego
Author: =?UTF-8?B?SmFyb3
Date: Sun, 24 Mar 2013 13:48
Date: Sun, 24 Mar 2013 13:48
82 lines
3500 bytes
3500 bytes
W dniu 2013-03-21 22:16, JarosÅaw LubczyÅski pisze: > W dniu 2013-03-21 15:46, hubert depesz lubaczewski pisze: >> On 2013-03-21, JarosÅaw LubczyÅski <guess@who.com.pl> wrote: >>> PotrzebujÄ wyrażenia regularnego, za pomocÄ którego mógÅbym usunÄ Ä >>> komentarze w skryptach SQL. Generalnie rzeczony regex powinien >>> dopasowywaÄ siÄ do ciÄ gu znaków, który: >>> 1. zaczyna siÄ od "--" i koÅczy wraz z koÅcem linii; >>> 2. nie jest czÄÅciÄ napisu otoczonego apostrofami "'" (z uwzglÄdnieniem >>> escape'owania tychże w stylu a) PostgreSQL "\'" b) Oracle "''") >>> >>> SpeÅnienie pierwszego warunku oczywiÅcie jest proÅciutkie, drugiego >>> zdecydowanie przekracza moje możliwoÅci :(. PróbowaÅem skorzystaÄ z >>> Regexp::Common ale ten wykÅada siÄ już na takim banalnym zapytaniu jak: >>> >>> select '--this is not a sql comment!' from dual; >> >> to jest możliwe, ale powtaje pytanie: a po co? chodzi o to, że może da >> siÄ to proÅciej zaÅatwiÄ. może np. jest to wynik dziaÅania jakiegoÅ >> programu i da siÄ to inaczej rozwiÄ zaÄ. > > ZmajstrowaÅem egzekutora skryptów sql (takich solidnie obkomentowanych > też), który nie potrzebuje do szczÄÅcia ani klienta bazy danych ani tym > bardziej natywnego parsera, wspóÅpracuje (póki co na razie, ale ze > Åwietlanymi perspektywami na rozwój w miarÄ potrzeby) z Oracle, > PostgreSQL i Sybase ASA, grzecznie przepycha do serwera polecenia z > usuniÄtymi komentarzami, ale niestety przy uruchamianiu zrzutu z bazy > wyÅożyÅ siÄ na kolumnach typu znakowego z magicznym '--' w Årodku... > > Moja skleroza podpowiada mi, że jakiÅ czas temu ÅciÄ gnÄ Åem takiego > regexpa (a wÅaÅciwie gotowego s///) z Sieci, miaÅ z kilometr dÅugoÅci, > ale *dziaÅaÅ*. Niestety jakoÅ nie mogÄ siÄ teraz do niego dogrzebaÄ, a i > Wujek Google dziwnie rozgadaÅ siÄ nie na temat :). W CPAN'ie znalazÅem > tylko wspomniane Regexp::Common::Comment, zajrzaÅem w gÅÄ b i wyszÅo mi, > że regexp dla SQLa nie na prawa dziaÅaÄ poprawnie w moim przypadku (nie > obsÅuguje apostrofów w ogóle). > >> >> depesz >> >> p.s. \' i '' to nie sÄ escape'owania w stylu "postgresql" i "oracle". >> pierwsze jest wziÄte z c, a drugie ze standardu sql. > > > Prawda :) > >> PostgreSQL >> supportuje obie wersje, przy czym \' dziaÅa (bez warningów) tylko >> w E-literaÅach. >> > > No, dla PostgreSQL'a ostatni raz testowaÅem to zachowanie chyba na > starożytnej dzisiaj wersji 7.4 (i zdaje siÄ wtedy dziaÅaÅo tylko "\'") a > teraz wersja 9.1 akurat na zÅoÅÄ zbiesiÅa misie - dzisiaj już nie > sprawdzÄ. Oracle 11 i ASA 12 faktycznie akceptujÄ tylko standardowe ''. > > Aha - czÅowiek uczy siÄ caÅe życie - grzebiÄ c dziÅ po Sieci dowiedziaÅem > siÄ, że można (a ponoÄ nawet należy) w skryptach SQL stosowaÄ C-cowe > komentarze (nawet w postaci wieloliniowych bloków) otoczone /* ... */ > (sprawdziÅem na Oracle Worksheet i ASA ISQL, można) wiÄc regexp powinien > byÄ gotowy przynajmniej na /* ... */ w pojedynczej linii. > > Aha, teraz znalazÅem potencjalne rozwiÄ zania w zakonie Perla, np. > http://www.perlmonks.org/?node_id0483 > pewno z rana przetestujÄ. > W koÅcu pod adresem http://www.perlmonks.org/?node_id0750 znalazÅem zadowalajÄ ce rozwiÄ zanie. -- Pozdrawiam Jarek LubczyÅski (eljot<NULL>90125 at gmail dot com) Nawiasy trójkÄ tne z zawartoÅciÄ zbÄdne sÄ There are 10 kinds of people: Those who understand binary and those who don't
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads