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

Export podataka iz mySql baze uz pomoc php-a!Pomoc

[es] :: PHP :: Export podataka iz mySql baze uz pomoc php-a!Pomoc

Strane: 1 2

[ Pregleda: 4986 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Export podataka iz mySql baze uz pomoc php-a!Pomoc25.01.2007. u 21:27 - pre 210 meseci
Imam problem koji nije bas jednostavan.
Ovako radio sam jedan CMS za jednu agenciju koja se bavi berzom rada(traze radnike za poslodavce).i u bazi koja je u mySql-u se cuva arhiva svih radnika koji su se prijavili da traze posao i poslodavci koji traze radnike.Aplikacija je postavljena online i radi odlicno.
E sada ta agencija hoce da ima jednu bazu kod sebe u lokalu koja nije online,ista kao ova sto je online, i da svakih 7 dana importuju sve nove klijente koji su se prijavili.Znaci da hoce i kod sebe u lokalu da imaju arhivu svih klijenata.
Da li neko moze da mi pomogne kako da resim ovaj problem,a da nije da se uloguju na server i exportuju podatke iz baze u neki fajl,a onda da importuju kod sebe u lokalu.Ako je i to jedini nacin kako da resim problem da se iz baze sa servera exportuju samo novi podaci?
djLapac
 
Odgovor na temu

dootzky
Programmer, PHP, Python, web development
beograd

Član broj: 85021
Poruke: 134
*.ewepc.net.



+1 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc26.01.2007. u 09:29 - pre 210 meseci
ako sam dobro razumeo, ako oni u svom lokalu nemaju net -> onda ces morati da im dostavljas update-ove baze peske, preko nekog fajla.

a ako te muci datum, mozes to da izregulises u query-u, u smislu samo vadi sve unose novije od "datuma".
link za citanje: http://dev.mysql.com/doc/refma...n/date-and-time-functions.html

npr: "SELECT * FROM tabela WHERE DATESUB(CURDATE(), INTERVAL 30 DAY) <= datum_unosa";

taj neki trip.

ili to, ili da se ne bi cimao, i promasivao neke unose, sto bi bilo jos gore, mozda je najbolje da se sinhronizuje baza na neki automatski nacin, ali cenim da ti treba online pristup onda iz lokala. npr nabasao sam na ovaj link:
http://www.webpronews.com/it/d...ipleMySQLDatabaseswithPHP.html

google search: "php synchronize mysql databases"

ili prosto sto si ti rekao -> napravi im automatski bekap sa CMSa (znaci da ne moraju da idu u admin panel i sl. komplikacije), i onda im napravi drugi skript u lokalu, gde oni mogu da upload-uju taj novi fajl, i onda ti preko skripte citaj nove podatke i puni bazu. celu ili parcijalno, kako ti mislis da je bolje.

evo ti link na drugi forum gde sam isto to ja pitao, kako je najbolje da se automatizuje bekap baze i sl:
http://devprotalk.com/t2177-du...baze-ali-na-siguran-nacin.html

nadam se da ti je ovo barem malo pomoglo,
poz,
dootzky
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc26.01.2007. u 21:03 - pre 210 meseci
Hvala ti, ovo mi je puno pomoglo.
resio sam problem koristeci tvoju klasu sa tim da sam je malo sredio da samo imam podatke bez koda "create table..."
Jer meni samo trebaju novi podaci.
Elem,sada imam drugi problem.
Kako da napravim skriptu(" skript u lokalu, gde upload-ujem taj novi fajl, i onda preko skripte citamnove podatke i punim bazu") koja ce mi izvrsavati kod sa tog sql fajla koji sma downloadovao,ili ako je to komplikovano kako da podesim phpmyadmin-u da nemam ono ogranicenje datoteke iz kog imporujem podatke na 2,048 kb posto moja baza ima oko 100 MB.
Ako moze neko da me uputi u resenje.
djLapac
 
Odgovor na temu

dootzky
Programmer, PHP, Python, web development
beograd

Član broj: 85021
Poruke: 134
*.ewepc.net.



+1 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc29.01.2007. u 13:16 - pre 209 meseci
pa nista, znaci ->

1) napravi obicnu "upload file" skriptu, i stavi taj fajl negde na server ili u privremeni folder
2) funkcija koja ti treba je pretty simple:

- trci kroz fajl koji si izgenerisao (onaj koji ima sve nove podatke)
- za svaku liniju u fajlu, napravi jedan "INSERT INTO tabela ..." upit, i upucavaj u svoju lokalnu bazu red po red, samim tim -> ceo update iz fajla


a za ogranicenje PHP My Admina nisam siguran, mada i to verovatno moze da se nadje uz pomoc googla

u svakom slucaju, ako si uspesno izgenerisao fajl sa novim podacima, kroz koji mozes da trcis iz PHPa -> nista ti vise ne trebaj.
samo generisi po jedan insert za svaku liniju i to je to

ovako trcis kroz taj fajl koji upload-ujes, naravno:

Code:

    $handle = fopen("myFile.txt", "r");
    while (!feof($handle)) 
    {
         $line = fgets($handle);
         if (strlen($line) <= 0) continue;    

                echo $line .'<BR>';

                // parsiraj liniju, vadi podatke koji ti trebaju (sve?)
                // pravi novi INSERT INTO, i cepaj
    }
    fclose($handle);


a ti naravno nemoj da ispisujes tu izlaz fajla, vec uzmi i parsiraj te linije:

Code:

$tmp = explode($line, ',');  // gde ti je ',' karakter koji ti razdvaja polja iz baze


i onda pravi lepo insert tu i uzivaj.

nadam se da me kapiras..

poz,
dootzky
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc29.01.2007. u 20:32 - pre 209 meseci
Da tvoje resenje je ok,ali kada ja radim sa ljudima koji cuvaju sve i svasta u bazi i onda imaju u svakoj tabeli oko 100 000 redova.oce da imaju aplikaciju online i pored toga jednu za svaki slucaj kod sebe u lokalu. evo sta je problem:
Ja sam nasao ovde na forumu jednu f-ju koja radi to sto si ti rekao. I ona radi ok ali kada dodje do pola koda pukne.
Ja sam napravio skriptu koja uradi beckup baze i downloaduje se fajl negde na server a onda pomocu jedne skripte izvrsim kod.Evo kako izgleda skripta koja radi taj posao:
Code:

function SqlParser($filename) {
  // razdvaja sql komande iz datoteke u array pojedinaènih instrukcija
  $sql= file($filename);
  $out= array();
  $p= 0;
  $size= count($sql);
  $Terms= array('`',"'",'"');
  while ($p<$size) {
      $line= $sql[$p];
      $tline= trim($line);
      if((!$tline)or($tline[0]=='-')) {$p++; continue;} // prazan red ili komentar
      // ako je stig'o dovde onda poèinje neka instrukcija
      $instr= '';
    $InString= false;
      do {
        $instr .= $line;
        // zavrsava li se red usred nekog stringa (enter usred stringa)
        for($x=0;$x<strlen($tline);$x++) {
          if(($InString)and($tline[$x]==$Term)) // izlazimo iz stringa
            {$InString=false; continue;}
          if((!$InString)and(in_array($tline[$x],$Terms))) // ulazimo u string
            {$Term=$tline[$x]; $InString=true; continue;} 
        }
        $FoundSemicolon= (!$InString) && (substr($tline,-1)==';');
         $p++;
         if($p>=$size) break;
         $line= $sql[$p];
        $tline= trim($line);
      } while (($InString) || (!$FoundSemicolon));
      $out[]= $instr;    
  }
  return $out;
}
    $filename="2007-01-29__09-10-05__dbBekap.sql";
    $niz=SqlParser($filename);
    foreach($niz as $niz1)
    {
    mysql_query($niz1);
    }
    echo "Done!";
?> 


i ovo radi sve ok ali onda odjednom pukne i izbaci ovu gresku:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; insert into kandidati (id_kandidat, ime, prezime, telefon, mobilni, email, ema' at line 1

I sta ja sada da radim?
ako neko moze da reasi moje muke nek pomaze(:

djLapac
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 07:21 - pre 209 meseci
Vidi, SqlParser funkcija prepoznaje kraj sql instrukcije po tome što se red završava sa znakom ";" i to van bilo kakvog stringa.
To je dovoljno dobro za (valjda) sve bekap programe i funkcije.

E ti si, prema ovom izveštaju o grešci, ceo bekap strpao u jedan red.
Moraš dodati "\n" pre svake instrukcije.
Svi normalni bekap sistemi tako rade pa sam se na to oslonio kad sam pisao ovu funkciju, inače bila bi mnogo duža.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 07:55 - pre 209 meseci
Ako moze samo pomoc gde treba u ovoj tvojoj funkciji da ubacim "\n".Ja sam ubacio ovde:
Code:

.
.
.
  $InString= false;
      do {
      $instr .= "\n";
        $instr .= $line;
.
.
.

Ali i dalje ne radi javlja istu gresku.
Hvala za pomoc.
djLapac
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 07:59 - pre 209 meseci
Ne u mojoj, nego u tvojoj kojom praviš bekap. Tamo dodaj entere da bi proredio instrukcije.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 08:15 - pre 209 meseci
Mislio sam da si funkciju SqlParser ti pisao pa da kazes da u njoj treba da dodam "\n" posle svake instrukcije.
Nije to problem u mojoj f-ji koja radi beckup proredjene su instrukcije sa 2 puta "\n" ali nece da radi.

djLapac
 
Odgovor na temu

dootzky
Programmer, PHP, Python, web development
beograd

Član broj: 85021
Poruke: 134
*.ewepc.net.



+1 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 08:27 - pre 209 meseci
hmm.. kapiram da je ova funkcija ok, ali ne vidim zasto tolika komplikacija.
pre svega -> napravi sopstveni bekap, znaci ti sam kreiras fajl na serveru, red po red. i sto kaze mVeliki - svakako je jedan red u bazi == jedan red u fajlu, odvojen zarezima ili nekim drugim delimiterom (npr. moze da se desi (99%) da u nekim unosima ima i zapetu, pa ce to dovesti do problema. umesto toga, kao "splitter" koristi neku specificnu kombinaciju karaketara, recimo "#@#", za razdvajanje polja. evo ajde ja cu sada da ti napisem skriptu na brzaka, lakse mi je tako nego da objasnjavam


1) skripta za export jedne tabele, primer

Code:

<?php
    $query = "SELECT user_id, username, pass FROM users";
    $result = mysql_query($query) or die(mysql_error() .'<BR>');
    
    $handle = fopen("users.txt", "w");
    
    // pripremam svoje specificne parametre za fajl
    $delimiter = "#@#"; // specifican niz karaktera, i ovako cu UVEK lako i verodostojno moci da prelomim svoju liniju iz fajla u "polja" iz baze
    $eol       = "\r\n"; // end-of-line. ako si pod windowsom -> treba ti "\r\n", a ako si pod unixom -> treba ti samo "\n";

    // idem red po red iz baze    
    while ($row = mysql_fetch_array($result))
    {
         // spremamo podatke za upis u fajl
        $id       = $row['user_id'];
        $username = $row['username'];
        $pass     = $row['pass'];
        
        // pravim liniju koju cu da upisem u fajl
        $line = $id .$delimiter. $username .$delimiter. $pass .$eol;
        
        // pisem liniju u fajl
        fwrite($handle, $line);
    }

    // zatvaram fajl
    fclose($handle);
?>



2) sada posto imam izgenerisan fajl sa svim podacima iz baze, samo trebam da protrcim kroz njega i da upisujem sve iz njega u bazu. simple. idemo:

Code:

<?php

    // otvaram fajl sa podacima iz baze, ali read-only;
    $handle = fopen("users.txt", "r");
    
    // pripremam specifican parametar, isti kao i u gornjem kodu, naravno
    $delimiter = "#@#";
    
    while (!feof($handle)) 
    {
        // citam liniju po liniju
        $line = fgets($handle);
        
        // prazne linije nas ne zanimaju
        if (strlen($line) <= 0) continue;    
        
        // ako sam stigao dovde -> znaci da imam liniju koja mi treba. prvo je parsiram
        $tmp = explode($delimiter, $line); 
        
        // spremam podatke
        $id   = $tmp[0];
        $user = $tmp[1];
        $pass = $tmp[2];
        
        // pravim sql upit
        $query = "INSERT INTO users (user_id, username, pass) VALUES ($id, '$user', '$pass')";
        
        // i evo ga konacno poslednji korak -> upucavam liniju po liniju, iz fajla u bazu na ovaj nacin.
        mysql_query($query) or die(mysql_error());
    }
    
    // zatvaram fajl, zavrsio sam sa citanjem.
    fclose($handle);
?>




i eto.
to je sve, zaista.

naravno ubaci negde u skriptu i db_connect, izregulisi sve sto treba, i ovo nisam kompajlovao, pa nemoj da se istripujes ako ti baci neki error, najverovatnije ce da bude zapeta ili sl, ali ako te bas bude mucilo -> baci ovde problem, pa cu da vidim sta je

eto, nadam se da je ovo pomoglo.
zaista ne vidim laksi nacin od ovoga, osim da koristis neke klase sa neta, ali to nikada ne valja, jer ne mozes da udjes u logiku uvek tako lako.

poz,
dootzky
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 08:50 - pre 209 meseci
Ovako,kod puca kod jednog reda u kome u tabelu treba da se upise podatak profesor u skoli "Branko Radicevic"
valjda zbog ovih navodnika.
Uploadovacu uz poruku klasu koja vrsi beckup baze i skriptu koja vrsi izvrsavanje brckup-a.
Ako neko provali gd eje problem nek javi.
Ja evo pokusavam na sve nacine ali ne ide.
Hvala puno svima na pomoci.
Poz
djLapac
Prikačeni fajlovi
 
Odgovor na temu

centaur
Beograd

Član broj: 65691
Poruke: 407
80.93.253.*

ICQ: 249678363
Sajt: www.pavko.net


+24 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 09:05 - pre 209 meseci
Pa stavi addslashes() za svaki podatak koji unosiš.
Pogledaj i ovu funkciju http://www.php.net/manual/en/f...n.mysql-real-escape-string.php.
Onda neće biti problema sa navodnicima i ostalim specijalnim karakterima.
Powered by Slackware 13
 
Odgovor na temu

dootzky
Programmer, PHP, Python, web development
beograd

Član broj: 85021
Poruke: 134
*.ewepc.net.



+1 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 10:22 - pre 209 meseci
svakako svakako... addslashses ce odraditi posao, ili ovaj link sto je centaur dao -> to je bila dugo vodjena debata, i mislim da je centaur u pravu, ali za tebe ce "addslashes" raditi posao bez groske. mislim, .. greske....

poz,
d
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 16:00 - pre 209 meseci
@nezki: daj nam ceo red, celu sql instrukciju na kojoj puca skript, kao i poruku o grešci ako je promenjena, ili mi pošalju na PM ako nije za javnost, pa da proučimo.

@dootzky: komplikovao sam zbog toga da dozvolim prisustvo znaka "\n" (enter,#13) u stringu, ovaj tvoj primer će se zbuniti naiđe li na taj karakter.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Whois

Član broj: 92214
Poruke: 37
195.252.79.*



Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 16:30 - pre 209 meseci
http://www.php-mysql-tutorial.com/perform-mysql-backup-php.php
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 21:51 - pre 209 meseci
Evo drustvo sada cu sve uploadovati i sve opet detaljno objasniti pa ako neko provali nek mi javi.
Ovako da pojasnim kako radi sve.
Imam klasu backupClass.php
i nju ukljucujem u skript beckup.php
kada pokrenem tu skriptu downloaduje se beckup baze negde kod mene.i sada skriptom unos.php treba da izvrsim taj kod tj. da se upisu podaci kod mene u bazu na lokalu.I sve radi ok od 22 tabele koliko ima napravi se 10 i unose se svi podaci u napravljene tabele,sve do jednog reda u kome ima podatak ..."profesor informatike u gimnaziji \'\'Branko Radicevic\"... i tu pukne.
I prijavi gresku koju sam vec naveo.
Eto to je sve sto mogu da vam kazem.


djLapac
Prikačeni fajlovi
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 22:25 - pre 209 meseci
Kada dodam addslashes onda ne moze uopste ne radi.Mozda ja nisam dodao na pravo mesto.
Evo gd esada puca :
Ovo je tacan red u kome pukne kod:
Code:

insert into kandidati (id_kandidat, ime, prezime, telefon, mobilni, email, email2, adresa, grad, datum_rodjenja, trenutno_zaposlenje, vestine_znanja, jezik, skola, zanimanje, program, napomena, oznaka)
 values 
(12627, "Ivana", "Milosevic", "011/8221-572", "063/8955-023", "[email protected]", "", "159.Nova 10/4", "Mladenovac", "22.12.1978", "broker aistentu BDD ,,Confidence\" a.d.", "položen ispit za brokera", "engleski+ruski+italijanski+", "Ekonomski fakultet+", "analitièar+bankarski službenik+broker+finansijski analitièar+knjigovodja+konsultant+kontista+market analyst+poslovni sekretar+raèunovodja+", "MS Excel+MS Word+Power point+Windows+", "", 0);


evo greska
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; insert into kandidati (id_kandidat, ime, prezime, telefon, mobilni, email, ema' at line 1
djLapac
 
Odgovor na temu

centaur
Beograd

Član broj: 65691
Poruke: 407
80.93.253.*

ICQ: 249678363
Sajt: www.pavko.net


+24 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc30.01.2007. u 22:31 - pre 209 meseci
Sve podatke koje stavljaš u bazu obradi sa addslashes() ili sa mysql_real_escape_string().

Powered by Slackware 13
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc31.01.2007. u 00:07 - pre 209 meseci
Moje izvinjenje,
našao sam da se SqlParse stvarno ne snalazi dobro sa raznim "eskejpovanjima",
evo sad sam to ispravio.

Dodao sam i podršku za stil "dupliranja apostrofa" koji koristi phpMyAdmin.

"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Prikačeni fajlovi
 
Odgovor na temu

nezki
Miodrag Lapcevic
Beograd

Član broj: 101503
Poruke: 438
212.62.55.*

Sajt: www.websolutions.co.rs


Profil

icon Re: Export podataka iz mySql baze uz pomoc php-a!Pomoc31.01.2007. u 08:04 - pre 209 meseci
Haug brothers!

Posle toliko muke proradilo je mVeliki je opravio svoju funkciju ,svaka mu cast!
sada radi ok,pazi kada napravi bazu sa 22 tabele i u svakoj upise vise od 100 000 redova...Ali,uvek ima ono ali...
"Sql fajl koji dobijam je iz win2k u ascii encoding.
Treba da ga konvertiram u utf-8 i pri tom da odstranim bom."
Jer podatke tipa srednja struèna sprema ili Saobraæajni fakultet prereze tako da uzme samo deo srednja stru ili Saobra i tako ih upise u bazu.
Nasao sam na forumu da je jedan lik napisao :

"Evo funkcije koja prevodi string iz "našeg" u UTF-8.
iconv("ISO-8859-2", "UTF-8", $string);
Možes jednostavnom petljom proći kroz query-file da ga "očistiš". Također možeš taj file čitav učitati u jedan string pa ga konvertovati..kako ti volja "

Sada je problem sto ne mogu da se snadjem sa funkcijom od mVelikog gde treba da ubacim ovu funkciju iconv("ISO-8859-2", "UTF-8", $string); u funkciju SqlParser($filename) ili vec sta treba da uradim da bi konacno sve bilo ok.
Hvala jos jednom svima za pomoc .
djLapac
 
Odgovor na temu

[es] :: PHP :: Export podataka iz mySql baze uz pomoc php-a!Pomoc

Strane: 1 2

[ Pregleda: 4986 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

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