Brug for hjælp til læsning af csv-fil

Tags:    php

Hej

Jeg har desperat brug for hjælp. Jeg har siddet og kæmpet med dette i flere dage.
Jeg har en csv-fil, der skal læses ind i en MySQL-database ved hjælp af PHP. Desværre er PHP ikke lige min stærke side. Så er der nogen der kan hjælpe mig med et script?

Selve csv-filen har 6 værdier, pr. linje, adskilt med ; (semikolon). Dog er der ikke noget ; i slutningen af hver linje.

Struktur:

Fornavn Mellemnavn;Efternavn;Klub;Rygnr;Klasse;Regnr

Eksempel:

Lasse Ott;Kartin;HFCK;00;UNG;DEN00000000

Det skal siges at det er en liste over cykelryttere, og at der er omkring 1800 linje/ryttere i filen.

Håber virkelig at nogen kan hjælpe mig.


På forhånd tak!



10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Der er en linje i php.ini hvor der står

max_execution_time = 30

Der kan 30 ændres til f.eks 90 istedet, så er den maksimale tid 1min 30sek istedet. Men chancen for at din webhost vil ændre det tror jeg ikke er så stor. Men hvis det bliver hostet fra din egen pc er det jo ikke noget problem.
Her er i øvrigt koden der indsætter alle dataene.

Fold kodeboks ind/udKode 


Og databasen skal se sådan her ud
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 23.09.2006 15:28 af Bruger #3275
Det er faktisk ikke så svært. Vil meget gerne kigge på det, men kan du ikke lige skrive et par linjer fra csv-filen? Så jeg har noget at teste med.

Edit: ok, lavede lige selv en testfil til at teste med. Det virker fint bortset fra følgende problem:

PHP har det der hedder en max execution time som på de fleste servere står på 30 sekunder. En fil med 1800 linjer vil ikke kunne nå at blive indsat på så kort tid (det lykkedes hvertfald ikke på min pc). Derfor bliver du nok nødt til at dele filen op i mindre filer á ca. 500 ryttere.

En anden lille ting jeg også lige skal have at vide er om den mysql-server du skal ligge ryttere ind i er mysql4 eller mysql5, for måden hvorpå man skriver til databasen er nemlig anderledes.



Indlæg senest redigeret d. 23.09.2006 13:05 af Bruger #3275
Det er MySQL v. 4.0.24

Er der ikke mulighed for, at sætte max execution time til mere end 30 sekunder?
Selvfølgelig kan jeg, som du siger, dele den op, men den skal hentes fra en anden server, og det skal helst foregå automatisk.

Hele csv-filen er forresten frit tilgængelig fra:
http://www.dcu-sj.dk/database/licensfil/Licensdata.csv

Jeg sætter stor pris på din hjælp.



Jeg ser kun to felter, hvor der står kode...?



Forstår ikke helt hvad du mener?

Edit: har lige ændret lidt i koden så databasen passer til hvad de forskellige værdier er.



Indlæg senest redigeret d. 23.09.2006 15:28 af Bruger #3275
Ups, jeg havde ikke set at man skulle trykke. Pinligt. Jeg er ny her, så det vidste jeg ikke.

Det virker helt fint på den server jeg bruger.

Du skal have tusind tak for hjælpen og har i sandhed fortjent de 200 point!



Tak skal du have. Håber du kan bruge det, men det lader det vist til ;).

Yay så fik jeg rundet de 10000 UP :D



Indlæg senest redigeret d. 23.09.2006 15:49 af Bruger #3275
Jeg det skal jeg love for!

Til lykke. Jeg er glad for at jeg kunne bidrage til dine point.









hehe, man kunne også have brugt php's indbyggede funktion til at læse csv-filer med :P

http://dk.php.net/manual/en/function.fgetcsv.php



t