Avatar billede inctor Nybegynder
18. juni 2008 - 00:23 Der er 8 kommentarer og
1 løsning

CSV import mysql

Hej Php-Nørder.

NU er jeg blevet godt træt af google,
kan ikke finde det jeg søger.

Jeg har et CSV dokument, med 13.000 linier og 9 Koloner.

Det skal jeg via et php dokument have splittet op, så jeg har en database med en tabel, hvor jeg har de 9 felter som jeg har af kolonner, og så vil jeg gerne ha at fra linie 1 kolonne 1's værdi skal sættes ind i Row 1 field 1 i tabellen, og således linie 1 kolonne 2's værdi ind i Row 1 field 2 i tabellen hvis i forstår.?
Altså på en måde lige kopiere det over, men det jeg har fundet på indtil nu, har ikke givet de store resultater.

Det eneste jeg er kommet frem til er således:

<?php
$handle = fopen("test222.csv", "r");
$row = 1;
while ($data = fgetcsv($handle, 4096, ";")) {
    $num = count($data);
      for ($c=0; $c < $num; $c++) {
      echo "Linie $c: ".$data[$c]."<br />";
}
}
fclose($handle);
?>

Men kan ikke lige finde ud af at få den delt op i array's så jeg kan få smidt det ind i en MySQL query, er godt klar over det resultere i der skal udføres 13.000 mysql-insert's .. Men det kan min server godt håndtere da den er privat hostet..

Nogen der kan hjælpe mig.?
Avatar billede jakobdo Ekspert
18. juni 2008 - 06:41 #1
Test lige noget i stil med:

<?php
//http://www.eksperten.dk/spm/835324
$handle = fopen("test222.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $sql = "INSERT INTO tabel_navn(felt1,felt2,felt3,felt4,felt5,felt6,felt7,felt8,felt9)
    VALUES('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')";
    mysql_query($sql) or die(mysql_error());
}
fclose($handle);
?>
Avatar billede expnet Seniormester
18. juni 2008 - 17:43 #2
jeg har lavet sådan et for et stykke tid siden som jeg kan sende til dig
som kan det du søger?.

Du kan smide din mail så kan jeg sende det til dig
Avatar billede inctor Nybegynder
18. juni 2008 - 18:20 #3
Jeg prøver lige det som Jakobdo, har postet, og så hvis ikk det virker, så får du da min mail ;)
Avatar billede inctor Nybegynder
18. juni 2008 - 18:26 #4
umiddelbart ser det ud til at virke Jakokdo..

Jeg prøver lige at teste den med en csv fil på over 30 linier :)
Plus at min XLS CSV er Semikolen Separeret, så rettede lige "," til ";" :)
Avatar billede expnet Seniormester
18. juni 2008 - 18:29 #5
Det script jeg har lavet skal du bare give stien til csv filen så opretter den selv databasen og med felter fra første lige 2 og ned efter som rows...
Avatar billede inctor Nybegynder
18. juni 2008 - 18:45 #6
Jakobdo, det virkede 100% perfekt som det skulle, måtte lige rette lidt på det, og så virkede det til min CSV-fil ..

Smid et svar ;)
Avatar billede jakobdo Ekspert
18. juni 2008 - 19:21 #7
Jamen du får et svar! :o)
Avatar billede inctor Nybegynder
18. juni 2008 - 23:00 #8
mange tak for hjælpen :D
Avatar billede jakobdo Ekspert
19. juni 2008 - 06:37 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester