Avatar billede hypofysen Nybegynder
24. januar 2013 - 11:09 Der er 18 kommentarer og
1 løsning

import af zip file til mysql database

Er der nogen der har nogle eksempler på hvordan man importerer en zip fil til mysql fra en php side?
Det er vigtigt at det kan gøres direkte fra min webside og ikke via ex phpmyadmin etc...
Avatar billede olebole Juniormester
24. januar 2013 - 18:29 #1
<ole>

Du må nok forklare, hvad du mener med "importerer en zip fil til mysql"

/mvh
</bole>
Avatar billede hypofysen Nybegynder
24. januar 2013 - 19:00 #2
Jeg har en zipped sql fil jeg skal kunne importere via min backend.
Avatar billede olebole Juniormester
24. januar 2013 - 19:10 #3
Ja, det fremgår tydeligt af spørgsmålet, men det kan jo betyde alt muligt  =)
Avatar billede hypofysen Nybegynder
24. januar 2013 - 19:11 #4
Så er du vist nød til at uddybe for jeg syns det virker konkret :)
Avatar billede hypofysen Nybegynder
24. januar 2013 - 19:15 #5
Men sikkert ikke konkret nok, da jeg ikke har kunnet google noget brugbart :)
Avatar billede olebole Juniormester
24. januar 2013 - 19:21 #6
Nej, jeg skal da ikke sidde og gætte, hvad du spørger om. Det må da være dig, der forklarer dit problem  =)

Forklar, hvad der skal ske. Skal filen pakkes ud? I så fald, hvad skal der så ske med indholdet? Hvad skal lægges i databasen?

Der er ingen andre end dig, som ved noget om, hvad du vil  =)
Avatar billede hypofysen Nybegynder
24. januar 2013 - 19:31 #7
Hehe jeg ved måske ikke helt nok om dette kan jeg forstå :)

Det er en fil der er blevet eksporteret, så er der tilføjet noget data og derefter skal den importeres igen.

Der skal ske det samme som hvis jeg importere filen via phpmyadmin.

Jeg kan godt uploade filen, pakke den ud og så importere den.

Men jeg vil helst undgå at filen skal udpakkes da den kan blive temmelig stor.
Avatar billede olebole Juniormester
24. januar 2013 - 19:35 #8
Hvad sker der, hvis du importerer filen gennem phpMyAdmin?
Avatar billede hypofysen Nybegynder
24. januar 2013 - 22:29 #9
så bliver den importeret på samme måde som hvis jeg først pakker den ud
Avatar billede olebole Juniormester
24. januar 2013 - 22:55 #10
- og hvad sker der, når du gør det?
Avatar billede hypofysen Nybegynder
24. januar 2013 - 23:15 #11
databasen bliver opdateret og så kommer følgende tekst
"Importen er korrekt gennemført, 5072 forespørgsler udført."
Avatar billede olebole Juniormester
25. januar 2013 - 15:05 #12
Hvis du overhovedet ingen anelse har om, hvad der skal ske, kan jeg nok ikke hjælpe.

Jeg kan sagtens lave et script, der udskriver teksten "Importen er korrekt gennemført, 5072 forespørgsler udført.", men det hjælper jo nok ikke så meget. Den besked fortæller, at der er sket noget på serveren - og ved du ikke, hvad det er, kan jeg ikke fortælle, hvad du skal gøre for at få det til at ske
Avatar billede hypofysen Nybegynder
26. januar 2013 - 10:04 #13
Vi prøver igen:

filen indeholder en række queries.
Måden jeg læser den ind på nu er følgende:

Først uloades filen til et temp bibliotek, derefter kører jeg følgende:

$sql = file_get_contents('../temp/'.$_FILES['impSql']['name'].'');
mysqli_multi_query($conn,$sql);

og herefter unlinkes filen igen.

Det fungerer efter hensigten, men file_get_contents fungerer ikke på en zipped fil.

Så spørgsmålet er bare er der alternativer til file_get_contents der kan læse i en zipped fil uden først at pakke den ud, eller er det noget helt andet jeg skal kigge efter?
Avatar billede arne_v Ekspert
27. januar 2013 - 05:21 #14
http://php.net/manual/en/book.zip.php

kan bruges til at laese fra zip filer med
Avatar billede olebole Juniormester
27. januar 2013 - 18:39 #15
Ahhh ... zippen indeholder SQL-filer! Problemet var, at den jo kunne indeholde billeder, tekster ... whatever  =)

Med PHP's Zip - som Arne linker til - kan du læse de enkelte filer i en zip og køre deres indhold mod databasen
Avatar billede hypofysen Nybegynder
28. januar 2013 - 06:30 #16
Jeg arbejder lige på det inden jeg uddeler point :) Godt Ole så lykkedes det endelig for mig at forklare problemet :)
Avatar billede hypofysen Nybegynder
28. januar 2013 - 07:48 #17
Følgende virker :) Smid et svar begge to som tak for hjælpen

<?php
$zip = zip_open("WT_435_1344802397.txt.zip");

if ($zip) {

    while ($zip_entry = zip_read($zip)) {

        if (zip_entry_open($zip, $zip_entry, "r")) {
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            echo $buf;

            zip_entry_close($zip_entry);
        }

    }

    zip_close($zip);

}

?>
Avatar billede arne_v Ekspert
28. januar 2013 - 15:45 #18
svar
Avatar billede olebole Juniormester
28. januar 2013 - 16:12 #19
Jeg samler ikke point, så de må være Arnes - men tak for tilbudet  =)
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

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