/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Beregning af linjelængder
Fra : Jens Gyldenkærne Cla~


Dato : 21-06-02 12:26

Jeg har en fil med en lang række SQL-kommandoer. Nogle få af
insert-sætningerne fejler fordi de er for lange. Så jeg er nu ude
efter en hurtig måde at sortere linjerne efter de længste, og
samtidig få vist linjelængden.

Jeg har altså:

INSERT INTO tabel VALUES (2, 234, ...)
INSERT INTO tabel VALUES (4, 221, 'Hej med jer..')

Og ønsker

6570; INSERT INTO...

Eller evt.

6570 INSERT INTO...

(hvor 6570 er antallet af tegn i den efterfølgende SQL-sætning).

Hvordan gør jeg nemmest det?

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

 
 
Peter Makholm (21-06-2002)
Kommentar
Fra : Peter Makholm


Dato : 21-06-02 12:34

"Jens Gyldenkærne Clausen" <jens_gy@hotmail.com> writes:

> Hvordan gør jeg nemmest det?

length($s) giver dig længden af en streng. Du kan altså sorterer med:
sort{length($a)<=>length($b)}

Eventuelt ville det være mere effektivt at lave en:

map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { [length,$_] } @linjer;

Eller endnu bedre at generere udskriften i den sidste map (altså den
forreste).


--
Peter Makholm | I congratulate you. Happy goldfish bowl to you, to
peter@makholm.net | me, to everyone, and may each of you fry in hell
http://hacking.dk | forever
| -- The Dead Past

Jens Gyldenkærne Cla~ (21-06-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 21-06-02 12:47

Peter Makholm skrev:

> length($s) giver dig længden af en streng. Du kan altså
> sorterer med: sort{length($a)<=>length($b)}
>
> Eventuelt ville det være mere effektivt at lave en:
>
> map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { [length,$_]
> } @linjer;

Undskyld - men det er længe siden jeg har skrevet perl-kode. Kan
jeg lokke et mere køreklart eksempel ud af dig eller andre?


--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Lars Balker Rasmusse~ (21-06-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 21-06-02 12:49

"Jens Gyldenkærne Clausen" <jens_gy@hotmail.com> writes:
> Jeg har en fil med en lang række SQL-kommandoer. Nogle få af
> insert-sætningerne fejler fordi de er for lange. Så jeg er nu ude
> efter en hurtig måde at sortere linjerne efter de længste, og
> samtidig få vist linjelængden.
>
> Jeg har altså:
>
> INSERT INTO tabel VALUES (2, 234, ...)
> INSERT INTO tabel VALUES (4, 221, 'Hej med jer..')
>
> Og ønsker
>
> 6570; INSERT INTO...
>
> Eller evt.
>
> 6570 INSERT INTO...
>
> (hvor 6570 er antallet af tegn i den efterfølgende SQL-sætning).
>
> Hvordan gør jeg nemmest det?

perl -pe 's/^/length() . "; "/e' SQLFIL | sort -nr
--
Lars Balker Rasmussen                  "S.M.R.T."

Jens Gyldenkærne Cla~ (21-06-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 21-06-02 12:57

Lars Balker Rasmussen skrev:


> perl -pe 's/^/length() . "; "/e' SQLFIL | sort -nr

Fornemt. Jeg takker og bukker.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Peter J. Acklam (24-06-2002)
Kommentar
Fra : Peter J. Acklam


Dato : 24-06-02 08:51

Lars Balker Rasmussen <lars@balker.org> wrote:

> perl -pe 's/^/length() . "; "/e' SQLFIL | sort -nr

Vakkert.

Peter

--
Where do bit streams end? In bit rivers?

Thorbjoern Ravn Ande~ (21-06-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 21-06-02 17:03

"Jens Gyldenkærne Clausen" <jens_gy@hotmail.com> writes:

> Jeg har en fil med en lang række SQL-kommandoer. Nogle få af
> insert-sætningerne fejler fordi de er for lange. Så jeg er nu ude
> efter en hurtig måde at sortere linjerne efter de længste, og
> samtidig få vist linjelængden.
>
> Jeg har altså:
>
> INSERT INTO tabel VALUES (2, 234, ...)
> INSERT INTO tabel VALUES (4, 221, 'Hej med jer..')

Hvis det kun er insert-saetninger, kan du saa ikke lave en CSV-fil og
en stump Perl med prepared statements?
--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste