Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Automatski uvoz csv datoteke

[es] :: PHP :: Automatski uvoz csv datoteke

[ Pregleda: 2086 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ekonomist30
Sanel Bajric
SANELDESIGN-Web developing and
programming
SANELDESIGN
Sarajevo

Član broj: 197541
Poruke: 76
92.36.147.*

Sajt: saneldesign.com


+6 Profil

icon Automatski uvoz csv datoteke17.06.2012. u 13:44 - pre 94 meseci
Pozdrav svima

Interesuje me da li je moguce da se koristenjem php pravi automatski uvoz csv fajla iz root foldera na serveru?

Prakticno, kada ja napravim izvoz iz excela npr. u .csv i taj fajl uploadam na webserver da se automatski importuju podaci iz tog fajla u tabelu u mysql bazi.

Ako je to moguce, cijenio bih da mi neki guru odavde objasni, jer sam googlao i googlao, i nista korisno nisam naso.


Hvala svima!
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3429
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Automatski uvoz csv datoteke17.06.2012. u 13:57 - pre 94 meseci
Sta ti konkretno predstavlja problem? Da li koristis fgetcsv() funkciju ili neki drugi nacin?
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

Ekonomist30
Sanel Bajric
SANELDESIGN-Web developing and
programming
SANELDESIGN
Sarajevo

Član broj: 197541
Poruke: 76
92.36.147.*

Sajt: saneldesign.com


+6 Profil

icon Re: Automatski uvoz csv datoteke17.06.2012. u 14:19 - pre 94 meseci
Citat:
pajaja: Sta ti konkretno predstavlja problem? Da li koristis fgetcsv() funkciju ili neki drugi nacin?


Pozdrav. Da koristio bih fgetcsv funkciju, to mi je bila primarna ideja. Znaci konekcija na bazu, upload fajla, citanje fajla, prolazak kroz tabelu, insert, kraj.
Ali sad vise opcija "browse for file" ne pije vode, nego trebam opciju automatskog citanja fajla na serveru, nakon uploada ;(
 
Odgovor na temu

Nemanja Avramović
Software architect
Cloud Horizon
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4382
*.dynamic.isp.telekom.rs.

Jabber: Nemanja Avramović
Sajt: avramovic.info


+45 Profil

icon Re: Automatski uvoz csv datoteke17.06.2012. u 15:54 - pre 94 meseci
Pogledaj kako rade cron poslovi.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Ekonomist30
Sanel Bajric
SANELDESIGN-Web developing and
programming
SANELDESIGN
Sarajevo

Član broj: 197541
Poruke: 76
92.36.147.*

Sajt: saneldesign.com


+6 Profil

icon Re: Automatski uvoz csv datoteke17.06.2012. u 17:43 - pre 94 meseci
Hmmm, cron jeste bio jedna od opcija, ali...

Bice nekoliko hiljada fajlova u toku 24 sata da se importuju u razne tabele na serveru. Mislim da mi cron nije bas dobra solucija a ne moze mi pasti nista drugo na pamet.
 
Odgovor na temu

Nemanja Avramović
Software architect
Cloud Horizon
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4382
*.dynamic.isp.telekom.rs.

Jabber: Nemanja Avramović
Sajt: avramovic.info


+45 Profil

icon Re: Automatski uvoz csv datoteke17.06.2012. u 19:41 - pre 94 meseci
Ne vidim zašto cron ne može da odradi to? U svakom slučaju, mislim da nećeš naći bolje rešenje, osim da se nekako automatizuje pozivanje skripte za uvoz odmah nakon izvoza/uploada csv fajla.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-4.sezampro.rs.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: Automatski uvoz csv datoteke19.06.2012. u 19:10 - pre 94 meseci
Ne vidim što je problem da postaviš da se taj cron pokreće npr. na svakih sat vremena, i da pritom ograničiš broj fajlova koji će biti procesirani pri jednom izvršavanju.

A ako baš hoćeš tu instant varijantu, da se import u bazu odigrava odmah po upload-u CSV fajla, onda bi to moglo da se odradi preko inotify API-ja koji postoji na Linux-u. Ideja je da napišeš neki bash skript, postaviš da se on pokreće po boot-ovanju sistema, a u njemu koristiš inotifywait komandu, na način da na trigger promene u tvom folderu (upload fajla), pokrećeš tu neku tvoju PHP skriptu koja će da odradi import podataka iz tog pristiglog fajla u bazu. Inače, ta inotifywait komanda osluškuje promene u nekom folderu i omogućava da se na te promene reaguje. Evo kako bi npr. izgledala ta skripta:
Code:
#!/bin/bash
 
UPLOAD_PATH="/neka/putanja"

inotifywait --format '%e %f' -e create -mr $UPLOAD_PATH | while read EVENT FILE
do
    PARAMS="file="$FILE
    php /putanja/do/import.php --$PARAMS
done

Verovatno sam napravio neku sintaksnu grešku, ali ovo je primer čisto da dobiješ neku ideju. Dakle kao što vidiš, pokreneš taj inotifywait u monitoring modu, saopštiš mu u kom folderu da sluša promene i onda kad se desi neki od događaja koje si izabrao (ja sam tu stavio samo "create", koji prati kreiranje novog fajla/foldera), radiš poziv PHP skripta, prosleđujući mi putanju do tog novokreiranog, odnosno u tvom slučaju tek upload-ovanog fajla. Kad se desi neki event, možeš da odabereš šta od informacija hoćeš da dobiješ od inotify-ja, ja sam u ovom slučaju stavio naziv event-a i fajl koji je izazvao event, to je ovo --format '%e %f'. Te podatke onda isčitavaš u tom while read EVENT FILE delu.

A u tom PHP-u skriptu onda imaš taj fajl parametar preko parse_str($argv[1]). Naravno, možeš taj parametar PHP skripti da prosleđuješ i drugačije, pa da ga hvataš sa getopt(), jer opet kažem, ovo je samo primer na brzaka.
 
Odgovor na temu

Ekonomist30
Sanel Bajric
SANELDESIGN-Web developing and
programming
SANELDESIGN
Sarajevo

Član broj: 197541
Poruke: 76
92.36.167.*

Sajt: saneldesign.com


+6 Profil

icon Re: Automatski uvoz csv datoteke20.06.2012. u 21:43 - pre 94 meseci
Pozdrav.
E sad si me uhvatio, jer ja ti sa Linuxom nisam bas na ti, odnosno koristim ga koliko moram. Ne zamjeri, mozda grijesim ali za pokretanje ovog fajla trebas imati fizicki pristup/root pristup serveru?! A ovdje se radi o web hostu, shared.

Ali hajd da ovako postavimo pitanje. CPanel i Cron poslovi - zelim da se svakih 10 minuta pokrene skripta, odnosno izvrsi import.php.

Kako biste vi najjednostavnije postavili ovaj posao kroz CPanel?

Zz
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.rs.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: Automatski uvoz csv datoteke21.06.2012. u 17:43 - pre 94 meseci
Da, ako nemaš full pristup serveru, onda ova druga opcija koju sam predložio otpada.

Što se postavljanja cron-a tiče, to može da se odradi preko cPanel-a, jer tamo u Advanced sekciji imaš Cron jobs. I onda novi cron podesiš na način da za Minute postaviš */10, a za sve ostale stavke (Hour, Day, Month, itd.) staviš *. A za Command ćeš upisati nešto tipa: php /putanja/do/import.php.
 
Odgovor na temu

Ekonomist30
Sanel Bajric
SANELDESIGN-Web developing and
programming
SANELDESIGN
Sarajevo

Član broj: 197541
Poruke: 76
92.36.176.*

Sajt: saneldesign.com


+6 Profil

icon Re: Automatski uvoz csv datoteke21.06.2012. u 19:01 - pre 94 meseci
E super, hvala ti. To je to.

Nego ovo je skripta koju sam planirao postaviti, pa ako imas nekih prijedloga ili savjeta u vezi, daj :)

Code:
<?php 
    # Author: Sanel
    # Email: [email protected] 
    
      
    # Skripta za import podataka u MySQL bazu iz .CSV datoteke 
    
    //Definisanje konekcije na bazu//

    define('DB_SERVER', 'host');
    define('DB_USER', 'user baze');
    define('DB_PASSWORD', 'lozinka');
    define('DB_NAME', 'ime_baze_na_koju_se_konektujemo');
 
    @$conn = mysql_connect (DB_SERVER, DB_USER, DB_PASSWORD);
    mysql_select_db (DB_NAME,$conn);
    if(!$conn){
    die( "Ne mogu se konektovati na bazu.");
}
      
    # Definisanje tabele/tabela u koje ce biti izvrsen uvoz - neogranicen broj...
    $table = array( 
                    'tabela1', 
            ); 


    # Email adresa na koju se salju rezultati importa 
    $emailaddress = "[email protected]"; 

    # Naziv email-a 
    $subject = "CSV Import"; 

    # Email adresa sa koje se salju rezultati 
    $emailfrom = "admin adresa na serveru"; 
      
# Kod ispod se ne mjenja 


    # Provjera za svaku tabelu definisanu kao array
    foreach ($table as $tablename) { 
          
        # DROP podataka iz tabele, ali ako se radi samo update, onda komentarisati ovu komandu
        $deleterecords = "TRUNCATE TABLE `$tablename`"; 
        mysql_query($deleterecords); 
          
        # Brojaci importa 
        $pass = 0; 
        $fail = 0; 
          
        # csv datoteka i fajl se trebaju isto zvati, imati isto ime, 
        # delimiter je zarez u CSV fajlu a CSV fajl ima isti rspored kao tabela, 
        # CSV fajlo/ovi i ovaj php fajl se moraju nalaziti u istom folderu
 

        $file_handle = fopen ("$tablename.csv","r");                                    
        while (($row = fgetcsv($file_handle, 1000, ",")) !== false) {                                                        
        echo "<p>tablename is $tablename"; 
         $insertrecord = "Insert Into `$tablename` Values (\"".implode('", "', $row)."\")";
        echo "<p>row is  \"".implode('", "', $row)."\"";  
            mysql_query($insertrecord); 
            if(mysql_error()) { 
                $fail += 1;     # Povecava se sa brojem gresaka pri importu
            } 
            else 
            { 
                $pass += 1;        # Povecavanje pri uspjesnom importu 
            }   
        } 
          
        
        # Dodavanje podataka o importu u email poruku
        $message .= "Import u tabelu $tablename: Uspjelo=$pass  Greska=$fail \n"; 
    } 

    # Vrijeme kad je skripta pokretana 
    $runtime = (date("d M Y H:i")); 
      
    # Vrijeme pokretanja skripte se salje u email poruci 
    $message .= "\nVrijeme poruke: $runtime (server time zone)\n\n"; 
      
    # Slanje emaila 
    mail($emailaddress, $subject, $message, "Od: '$emailfrom'"); 

?>

 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.rs.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: Automatski uvoz csv datoteke22.06.2012. u 17:38 - pre 94 meseci
Postoji već tema na kojoj se raspravlja o toj skripti, pa da ne širimo sad raspravu na dva mesta. Jedino što mogu da te savetujem jeste da na serveru, tu skriptu staviš na mesto koje nije javno dostupno, tj. negde gde neko neće moći da jos pristupi npr. direktno iz browser-a, pošto pretpostavljam da ne želiš da neko zloupotrebljava pokretanje tvoje skripte za import.
 
Odgovor na temu

[es] :: PHP :: Automatski uvoz csv datoteke

[ Pregleda: 2086 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.