script PHP pentru a importa date CSV în MySQL

19 februarie 2007

Acesta este un script simplu care vă va permite să importaţi date CSV în baza de date. Acest lucru vine la îndemână, deoarece puteţi edita pur şi simplu, câmpurile corespunzătoare, să le încărcaţi împreună cu fişierul CSV şi de apel de pe internet şi va face restul.

Acesta vă permite să specificaţi delimitatorul în acest fişier csv, dacă este vorba de o comă, o filă etc De asemenea, vă permite să aleagă separator de linie, vă permite să salvaţi de ieşire într-un fişier (cunoscut ca un depozit de date SQL).

De asemenea, vă permite să includeţi un câmp gol, la începutul fiecărui rând, care este de obicei o creştere întreg auto cheie primară.

Acest script este util mai ales dacă nu aveţi phpMyAdmin, sau nu doriţi hassle de logare şi preferă o soluţie câteva click-uri, sau pur si simplu sunt un tip prompt de comandă.
Doar asiguraţi-vă că tabelul este deja create înainte de a încerca să scap de date.
Kindly posta comentariile dumneavoastră dacă ai orice raport de eroare.

Descărca fişierul aici

Tag-uri:
  1. UMAir
    02 mai 2011 la 07:39

    Hi ...
    Sunt confruntă cu o problemă, atunci când am folosi acest lucru, arătând o eroare spunând
    "Dezaprobate: Funcţia split () este depasit in C: \ wamp \ www \ test1 \ simplecsvimport.php on line 64
    Fişierul nu este inscriptibil, verificaţi permisiunile. Gasit un total de 41 de înregistrări în acest fişier csv. "

    Răspunsul Pls, ce sa întâmplat!
    Multumesc anticipat!

  2. justkid
    07 aprilie 2011 la 10:25

    Sunt foarte confuz cu acest cod!
    dar am obiceiul de a încerca-te!
    BTW, cum html codul de câmp sau pentru a apela acest cod

  3. Jorge Dias
    14 martie 2011 la 19:01

    Multumesc, importatorul csv foarte bun.
    Dar am găsit o mică problemă, ea funcţionează doar cu csv cu structura: "câmp1", "field2", "field3", etc, dar am Hava un fişier CSV ca aceasta: câmp1; field2, filed3; etc

    Singurul lucru pe care pot schimba este de $ fieldseparator dar cum pot "spune" script-ul că dosarul nu utilizează "(delimitator câmp)?
    ideia mea a fost un combobox cu $ fieldseparator (, sau ;) şi un altul cu $ fielddelimiter ("sau nimic)

    Mulţumesc în avans.

  4. Ruginit
    03 februarie 2011 la 14:56

    Orice idee de cum să obţineţi acest script pentru a lucra pentru câmpurile care sunt închise cu ghilimele, astfel încât câmpurile cu virgulă în ele nu se citesc ca o noua intrare?

    Am date care include virgule ca sumele dolar şi o secţiune de comentarii în care utilizatorii ar putea fi folosit un virgulă. Am nevoie de întregul domeniu importate şi acest script le tratează ca domenii noi.

  5. qwewe
    23 ianuarie 2011 la 14:56

    @ Mark Cloyd
    "Adresa = VALORI (adresa)
    Primesc o eroare aici ca eroare Parse: eroare de sintaxă, neaşteptat '='

  6. ronbowalker
    15 ianuarie 2011 la 17:54

    @ Joofoo
    Am încărcat codul dumneavoastră, dar nu primesc nici informatiile actualizate pe baza de date MySQL ...

    CSV conţine:
    Antet - numele de utilizator>, parola, mesaj, e-mail, imagine, data
    ROW2 -> Bill, omule,,,,
    Jane>, Gal,,,, - Row3
    Row4 -> David, copil,,,,

    Şi aici este codul ...:
    <? Php

    / / Set-up de la dosar, în iphonelogin.php "la distanţă" dosarul ...
    / * * Conecta la db /
    / / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo "," Pepper0689 ") or die (" Nu se poate conecta la DB ");
    / / Mysql_select_db ("ronbo", $ link) or die ("Nu se poate selecta DB");

    / / https://www.ihappyapps.com/DataFolder/loader.php
    /********************************/
    / * Codul de la https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Editare intrările de mai jos pentru a reflecta valorile corespunzătoare
    /********************************/
    $ Databasehost = "dbhost";
    $ Databasename = "nume";
    $ Databasetable = "masă";
    $ Databaseusername = "nume de utilizator";
    $ Databasepassword = "parola";
    $ Fieldseparator = ",";
    $ Lineseparator = "\ n";
    $ Csvfile = "spreadsheet.csv";
    /********************************/
    addauto $ = 1;
    /********************************/
    $ Salva = 0;
    $ Fişierieşire = "output.sql";
    /********************************/

    if (file_exists ($ csvfile)!) {
    echo "Serverul a primit cererea dumneavoastră, dar fişierul CSV pe care doriţi să încărcaţi în baza de date nu este prezent ... .. \ n";
    ieşire;
    }

    Chunksize $ = 1 * (1024 * 1024);
    $ File = fopen ($ csvfile, "rb");
    if ($ file!) {
    echo "Eroare la deschiderea fişierului de date \ n.";
    ieşire;
    }

    $ Size = filesize ($ csvfile);

    if ($ dimensiune!) {
    echo "File este gol. \ n";
    ieşire;
    }

    $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
    @ Mysql_select_db ($ databasename) or die (mysql_error ());

    linii $ = 0;
    interogări $ = "";
    în timp ce (! feof ($ file)) {
    $ Csvline = fgets ($ file, $ chunksize);

    linii $ + +;
    if ($ linii <2) continuă;

    $ Linie = trim ($ csvline, "\ t");

    $ Linie = str_replace ("\ r ","",$ linie);

    /************************************************* ************************************************** *********
    Această linie scapă caracter special. scoateţi-l în cazul în care intrările sunt deja scăpat în fişierul CSV
    ************************************************** ************************************************** ********/
    $ Linie = str_replace ("'"," \ '", $ linie);
    /************************************************* ************************************************** ********/

    $ Linearray = exploda (fieldseparator $, $ linie);

    $ Linemysql = implozie linearray ("','",$);

    $ Query introduce "în valori = $ databasetable ('$ linemysql');";

    if ($ salva) interogări $ $ .= interogare. "\ N";

    @ Mysql_query ($ interogare);
    echo $ linii "\ n".;
    }
    fclose ($ file);

    linii $ -= 3;

    @ Mysql_close ($ con);

    <>

    I într-adevăr ar putea folosi unele ajuta la obtinerea aceasta să funcţioneze ...
    Ron

  7. joofoo
    11 ianuarie 2011 la 11:16

    @ Roy
    Am modificat script-ul dvs., astfel încât acesta consumă mult mai puţin atunci când memoria de prelucrare a fişierelor de dimensiuni mari (lovit-o limita de memorie php atunci când am încercat să-l folosească pe un fişier CSV 100MB). Schimbările sunt după cum urmează:


    $chunksize = 1*(1024*1024);
    $file = fopen($csvfile,"rb");
    if(!$file) {
    echo "Error opening data file.\n";
    exit;
    }

    $ Size = filesize ($ csvfile);

    if ($ dimensiune!) {
    echo "File este gol. \ n";
    ieşire;
    }

    $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
    @ Mysql_select_db ($ databasename) or die (mysql_error ());

    linii $ = 0;
    interogări $ = "";
    în timp ce (! feof ($ file)) {
    $ Csvline = fgets ($ file, $ chunksize);

    linii $ + +;
    if ($ linii <2) continuă;

    $ Linie = trim ($ csvline, "\ t");

    $ Linie = str_replace ("\ r ","",$ linie);

    /************************************************* ************************************************** *********
    Această linie scapă caracter special. scoateţi-l în cazul în care intrările sunt deja scăpat în fişierul CSV
    ************************************************** ************************************************** ********/
    $ Linie = str_replace ("'"," \ '", $ linie);
    /************************************************* ************************************************** ********/

    $ Linearray = exploda (fieldseparator $, $ linie);

    $ Linemysql = implozie linearray ("','",$);

    $ Query introduce "în valori = $ databasetable ('$ linemysql');";

    if ($ salva) interogări $ $ .= interogare. "\ N";

    @ Mysql_query ($ interogare);
    echo $ linii "\ n".;
    }
    fclose ($ file);

    linii $ -= 3;

    @ Mysql_close ($ con);

    Vă mulţumesc,

  8. Khaled A
    11 ianuarie 2011 la 10:35

    @ Khaled A
    Cum pot exporta UTF8 Excel la output.sql
    mulţumiri

  9. Khaled A
    11 ianuarie 2011 la 09:46

    Am încercat script-ul, dar este output.sql scriere chestii ciudate,
    introduce în valori test_excel ("PK |!?????????????? Q k5 q Q k5 q Q k5 q ....

    ca aceste lucruri
    Cum pot rezolva această problemă. orice format special pentru Excel foaie?

  10. Crescătorie de iepuri de casă
    30 decembrie 2010 la 18:57

    Salut baieti, vrut doar să ştiţi cu toţii că am găsit pe cineva să-mi scrie programul actual am nevoie.

  11. Crescătorie de iepuri de casă
    29 decembrie 2010 la 01:31

    @ Warren

    /********************************/
    Acest fişier include multe schimbari încercat făcute de Warren (nu un programator) la 28 decembrie 2010 începând bazat pe comentarii la site-ul sursă şi alte informaţii, astfel încât să facă acest program în cel care are nevoie. Acest lucru este foarte incomplet. Ajutor este cel mai apreciat si foarte necesare.

    Linii adăugat pentru a crea cutii de intrare pentru numele bazei de date site-ul URL-ul şi parola, etc
    /********************************/

    Bine ati venit la Server Upload Utility

    Acest program se execută de la PC-ul dvs. pentru a popula două tabele goale într-o nouă MySQL Bază de date pe site-ul dvs. de: upload fiecare nume de fişier mai puţin prelungirea, cu un număr unic în faţă ca un contor, pentru a keywords_categories masă, şi apoi atribuie apoi numărul 1 în coloana necompletată în faţa colum prima de date din acel fişier, şi creşte numărul de unul pentru fiecare dosar ulterior prelucrate din acel director, astfel încât numărul assigend la numele categoriei în tabel se potriveşte cu cuvintele cheie care aparţine acesta, care sunt apoi încărcat la tabelului de cuvinte cheie.

    Acest lucru se face pentru toate fişierele csv într-un director specificat pentru dumneavoastră.

    Acesta ignoră primele cinci linii în fişierul CSV.

    Website URL:
    Numele bazei de date:
    Baza de date Nume utilizator:
    Baza de date Parola:
    Cale de Director ce conţine fişiere de încărcat:

    /********************************/
    Întrebare
    Cum pot obţine mai sus date de la cutiile de intrare în program pentru a se potrivi care au solicitat de mai jos?
    /********************************/

    <? Php
    /********************************/
    Linie adăugat pentru a preveni timeout pe fişiere mai mari.
    /********************************/

    set_time_limit (0);

    /********************************/
    Ia dosar nume de fişiere pentru a fi prelucrate, eliminaţi extensia de nume de fişier, apoi a le folosi pentru a încărca ca nume de categorie la keywords_categories tabel.
    /********************************/

    /********************************/
    Elimină fişier extensii nume
    copiate de la perlmonks www org /? node_id = 151232
    /********************************/

    sub parse_out_extension {
    die ("Nu filename pentru a analiza \ n".) în cazul în care (@ _!);

    mea ($ file) = @ _;
    @ mea bucăţi;

    Harta {push (@ bucati, $ _)} split (/ \ /, $ file.);

    mea $ sfârşitul pop = (piese @);
    $ File = ~ s / \ $ sfârşitul / /.;

    retur ($ file) în cazul în $ file;

    /********************************/
    / * Codul original la https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Editare intrările de mai jos pentru a reflecta valorile corespunzătoare
    /********************************/
    $ Databasehost = "localhost";
    $ Databasename = "test";
    $ Databasetable = "mostră";
    $ Databaseusername = "test";
    $ Databasepassword = "";
    $ Fieldseparator = ",";
    $ Lineseparator = "\ n";
    $ Csvfile = "filename.csv";
    /********************************/
    / * Doriţi să adăugaţi un câmp ampty la începutul acestor înregistrări?
    / * Notă către Warren în cazul cuvintele cheie care sunt prima coloană de date în fiecare fişier, pe un fişier de bază acest fişier nou, necompletat DIN frot locul coum de cuvinte cheie trebuie să fie schimbat, astfel surprinde numărul atribuit nume categorie care este alcătuit din numele fişierului mai puţin extinderea şi îl plasează în această coloană goală nou prim.
    / * Acest lucru este util dacă aveţi un tabel cu primul câmp fiind un număr întreg AUTO_INCREMENT. Notă de Warren. Aceasta este ceea ce este nevoie în cazul exteniosn dosar nume care sunt mai puţin upoaded to keywords_categories tabel.
    / * Şi fişierul CSV nu are, cum ar fi câmp gol înainte de înregistrări.
    / * Set 1 pentru da şi 0 pentru nu. ATENŢIE: nu setat la 1 dacă nu sunteţi sigur.
    / * Acest lucru poate dump date în domeniile greşit în cazul în care acest domeniu suplimentar nu există în tabel. Notă de Warren probabil nu au nevoie de acest fişier am cazul meu, ci numai o presupunere din partea mea, dar nu au nevoie pentru a vedea dacă orice nevoie.
    /********************************/
    addauto $ = 1;
    /********************************/
    / * Doriţi să salvaţi interogări mysql într-un fişier? Dacă este setat da la 1 $ salva.
    / * Permisiune la dosar ar trebui să fie stabilit la 777. Fie încărcaţi un fişier eşantion prin FTP şi
    / * Schimba permisiunile, sau de a executa la prompt: output.sql touch & & chmod 777 output.sql
    /********************************/
    $ Salva = 0;
    $ Fişierieşire = "output.sql";
    /********************************/

    if (file_exists ($ csvfile)!) {
    echo "Fisierul nu a fost găsit. Asiguraţi-vă că aţi specificat corect calea \ n ".;
    ieşire;
    }

    $ File = fopen ($ csvfile, "r");

    if ($ file!) {
    echo "Eroare la deschiderea fişierului de date \ n.";
    ieşire;
    }

    $ Size = filesize ($ csvfile);

    if ($ dimensiune!) {
    echo "File este gol. \ n";
    ieşire;
    }

    $ Csvcontent = fread ($ file, $ size);

    fclose ($ file);

    $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
    @ Mysql_select_db ($ databasename) or die (mysql_error ());

    /********************************/
    Pentru a evita introducerea primele patru rânduri de text adveristing în antet şi o linie goală. Linia egale cu zero cod a fost înlocuit cu codul de mai jos.
    /********************************/

    linii $ = 1; (Valoarea pentru contorul este 1)
    interogări $ = "";
    $ Linearray = array ();

    foreach (split ($ lineseparator, $ csvcontent) ca linia $) {

    $ Linii + +; (Atribuie prima linie # 2 (antet)

    if ($ linii> = 5) {(Start la # 5 "ceva mai mare sau egal cu 5?)

    interogări $ = "";
    $ Linearray = array ();

    foreach (split ($ lineseparator, $ csvcontent) ca linia $) {

    linii $ + +;

    $ Linie = trim ($ linie, "\ t");

    $ Linie = str_replace ("\ r ","",$ linie);

    /************************************
    Această linie scapă caracter special. scoateţi-l în cazul în care intrările sunt deja scăpat în fişierul CSV
    ************************************/
    $ Linie = str_replace ("'"," \ '", $ linie);
    /*************************************/

    $ Linearray = exploda (fieldseparator $, $ linie);

    $ Linemysql = implozie linearray ("','",$);

    if ($ addauto)
    $ Query = "insera în valori $ databasetable (",'$');"; linemysql
    altfel
    $ Query introduce "în valori = $ databasetable ('$ linemysql');";

    interogări $ $ .= interogare. "\ N";

    /************************************
    Acest bit de codul de mai jos a fost adăugat pentru a arăta acum mesaje de eroare.
    ************************************/

    $ Rezultat = mysql_query ($ interogare);

    / / Verificaţi rezultat
    / / Acest lucru arată interogarea la trimis la MySQL, şi eroarea. Utile pentru depanare.
    if ($ rezultat!) {
    $ Mesaj "Invalid query: '=. mysql_error (). "\ N";
    $ Mesaj .= "interogare Total:". $ Query;
    die ($ mesaj)
    }

    @ Mysql_close ($ con);

    if ($ salva) {

    if (! is_writable ($ fişierieşire)) {
    echo "Fişierul nu este inscriptibil, permisiuni verifica \ n.";
    }

    else {
    $ File2 = fopen ($ fişierieşire, "w");

    if ($ file2!) {
    echo "Eroare la scrierea în fişierul de ieşire \ n.";
    }
    else {
    fwrite ($ fisier2, interogări $);
    fclose ($ fişier2);
    }
    }

    }

    echo "Am găsit un total de $ înregistrări linii în acest fişier csv. \ n";

    ?>

  12. Crescătorie de iepuri de casă
    28 decembrie 2010 la 22:30

    Doar o corecţie uşoară la cererea mea, cele două tabele în baza de date MqSQL am menţionat se numeşte de fapt:

    keywords_categories

    cuvinte cheie

  13. Crescătorie de iepuri de casă
    28 decembrie 2010 la 22:10

    @ Warren

    De asemenea, doar din curiozitate ar putea procesa, de asemenea un fisier txt, (care are doar o listă de cuvinte în ea), la fel?

    (Eu sunt nou la asta, şi ştiu că ar putea să ceară mult, asa ca daca cineva ar putea avea acest proiect mic pe pentru mine, dacă este necesar, poate am putea discuta mea de plată o sumă mică pentru timpul lor în a face modificări satisface nevoile mele Vă rog să-mi spuneţi.?)

    Mea de e-mail este: wr.spence @ hotmail.com

  14. Crescătorie de iepuri de casă
    28 decembrie 2010 la 21:37

    Eu nu sunt un programator. Văd script-ul dvs. şi ar putea fi aproape de ceea ce am nevoie, sau ar putea forma poate baza a ceea ce am nevoie, eu nu sunt sigur.

    Am nevoie pentru a îndeplini aceleaşi upload funcţia de peste si peste din nou, dar de la un alt sub-directorul de fiecare dată de la meu disc tare, pentru o listă de fişiere csv, şi la un alt MySQL DB de fiecare dată (pe un site differret de fiecare dată). În cele mai multe cazuri, db nu va avea nici date în el, dar ar fi ideal (dar nu esenţial), în cazul în care script-ul ar putea funcţiona în continuare cu un db care au avut de date, fără a afecta datele existente).

    Am nevoie de ea sa va logati la db pe server (acesta ar trebui să mă întreabă pentru URL-ul site-ul şi numele de utilizator şi parola dB, etc).

    Am nevoie de ceva care îmi permite să răsfoiţi şi să alegeţi un nume de director pe meu disc tare, sau introduceţi-l.

    Apoi, procesul de fiecare fişier CSV în acel director, unul după altul, după cum urmează:

    Pe fiecare fişier am nevoie de ea pentru a lua mai întâi numele fişierului (mai putin extensia) şi încărcaţi-l la db din categoria tabel. Acest tabel conţine o cheie numerotat pe care apoi atribuit acest nume.

    Am nevoie de script-ul, apoi să încărcaţi numai colum cuvântul (prima colum de date) din acel fişier la cuvinte de masă, şi adăugaţi nubmer potrivite pentru numele categoriei din primul fişier.

    Trebuie remarcat faptul că fişierul CSV conţine adesea trei linii de text de antet şi o linie goală, toate cele patru care vreau ignorat şi nu încărcat. Nu sunt de multe ori liniile goale la eend te din dosar De asemenea, vreau să ignore, aceste, precum şi ca ignora orice alte coloane, care poate sau nu poate fi în fişierul CSV. În unele cazuri, fişierul csv nu poate avea nici un antet sau orice alte coloane.

    Apoi fisierul urmator, până când rămâne fără de fişiere în directorul.

    Apoi mi-ar place să-mi spună, "Process complet." Şi, dacă eventualele erori să-mi spună.

    Poate niciunul dintre voi să mă ajute cu asta?

  15. Alfa
    26 decembrie 2010 la 18:32

    Vă mulţumim pentru partajarea exceleze la mysql script-ul, acest lucru este foarte util pentru mine.

  16. pruthvi
    24 decembrie 2010 la 16:09

    ya lucrărilor codul dar nw primesc datele mele închise în ghilimele @ Suman

  17. Suman
    23 decembrie 2010 la 14:18

    Suman :
    @ Pruthvi
    Hi,
    Vă rugăm să folosiţi codul de mai jos dat ... ...

  18. Suman
    23 decembrie 2010 la 14:16

    @ Pruthvi

    Hi,

    Vă rugăm să folosiţi codul de mai jos dat ... ...

  19. Suman
    23 decembrie 2010 la 14:12

    Grate Codul Este foarte util la toate dezvoltator PHP.

  20. pruthvi
    23 decembrie 2010 la 09:48

    puteţi explica codul dvs. doriţi să înlocuiţi @ mysql_query ($ interogare); cu u declaraţiile dat, dar acesta este afişat o eroare $ mesaj este nedefinit @ Fish Andrew

  21. pruthvi
    23 decembrie 2010 la 09:31

    aceeaşi problemă cu mine @ Andrew Fish

  22. pruthvi
    23 decembrie 2010 la 09:30

    cele mai recente de dezvoltare a codului poate detecta nu de linii în fişierul CSV, dar sa nu-l afişează în tabelul de mai

  23. pruthvi
    23 decembrie 2010 la 08:52

    codul se intoarce o declaraţie că aceasta a putut găsi fişierul CSV ...
    Wat ar putea fi problema ....

  24. Andrew de peşte
    10 decembrie 2010 la 15:28

    Bine, găsit problema. Am avut mispelt numele tabelului. Dar a găsit doar problemă atunci când am avut adăugat următorul cod, care va returna o eroare în cazul în care nu reuşeşte sql. În prezent, script-ul nu spune dacă a fost o problema.
    Deci, schimba linia
    @ Mysql_query ($ interogare);

    la toate din următoarele: -

    $ Rezultat = mysql_query ($ interogare);

    / / Verificaţi rezultat
    / / Acest lucru arată interogarea la trimis la MySQL, şi eroarea. Utile pentru depanare.
    if ($ rezultat!) {
    $ Mesaj "Invalid query: '=. mysql_error (). "\ N";
    $ Mesaj .= "interogare Total:". $ Query;
    die ($ mesaj)

    Sper că vă ajută cineva. Ea mi-a făcut.
    AJ

    @ Andrew peşte

  25. Andrew de peşte
    09 decembrie 2010 la 16:26

    Când am rula acest script cu ajutorul unui csv care ştiu că importurile folosind PHP Admin corect, script-ul ruleaza, rapoarte numărul corect de rânduri cu mesajul "Am găsit un total de 193 de înregistrări în acest fişier csv.", Dar nici unul dintre date apare în masa. Am făcut modificări la CSV, astfel încât să pot vedea dacă datele este de a fi puse în masă şi nu este. Orice idei?
    AJ

  26. Craig
    08 decembrie 2010 la 01:20

    Dosarul meu CSV import are, de asemenea, ghilimele duble în jurul fiecare domeniu (în principal, pentru a evita problemele dacă am nevoie de a importa în Excel astfel încât aceasta nu mangle de date), asa ca am avut această problemă în cazul în care aceasta a fost de a introduce înregistrările cu ghilimele de date. Am lipsit toate ghilimelele duble adăugând această linie:

    $ Linie = str_replace (linia "\ "","",$);

    după această linie:

    $ Linie = str_replace ("\ r ","",$ linie);

    şi noua linie inlocuieste ghilimelele duble cu nimic. Este la fel ca înainte, cu excepţia liniei este eliminarea \ "în loc de \ r (ghilimele se întoarce în loc de transport).

    @ Neady

  27. melc
    01 decembrie 2010 la 17:29

    Un program de mare mic.

    Există o modalitate de a înlocui datele de exemplu, într-o celulă. "City" în csv si schimba-l la o valoare dintr-o pagină anterioară ca o _SESSION $ _POST sau $ valoare?

  28. Evan Islam
    30 noiembrie 2010 la 17:23

    Acest lucru este mare ... foarte uşor să pună în aplicare. Acum figura Trebuie cum să utilizaţi acest script sau similare pentru a încărca. Xls împreună cu fişierul. Csv

  29. admin
    29 noiembrie 2010 la 16:57

    @ Mike
    Poţi să încercaţi să adăugaţi:
    set_time_limit (0);
    chiar de la început? (Imediat după tag-ul php de deschidere)

  30. mike
    18 noiembrie 2010 la 21:48

    @ Tutoriale Exclusive
    Există o modalitate de a nu-l timp afară? it works mare cu 100k de înregistrări, dar când mă duc pentru ceva mare ca un mil. sau mai mult, ruleaza pentru aproximativ 20 de secunde, apoi merge la ecran gol şi anunţurile nu conţine înregistrări.? Multumesc.

  31. neady
    25 octombrie 2010 la 18:21

    Având în exact aceeaşi problemă, poate cineva ajuta va rog?

    Roy :
    Hi,
    Eu folosesc acest script pentru a importa un fişier CSV datafeed la MySQL.
    Singura problema am, este că ghilimele "" sunt, de asemenea inserate în tabele mea
    Delimitator:, (komma)
    Enclosure: "(aanhalingsteken)
    Noua linie: \ r \ n

  32. Seelam Ravi Kumar
    19 octombrie 2010 la 17:26

    HI prieteni,

    Am nevoie de ajutor urgent de la tine ... Deci, ajuta amabilitatea de a mă aici este codul ...

    Pregătit fişierul HTML. Dar am nevoie de ... soluţie php Kindly ajutor pentru mine ... ... ..

    Trimite SMS

    Receptor mobil Număr:
    +91

    Agenda

    Încărcaţi fişier Excel:

    <!-->
    <Tipul de intrare = "file" name = "file" class = "file_input_hidden" onchange = "javascript: document.getElementBy

    Sender ID:
    :

    YOGA
    GRAFS
    MOBITEL

    var frmvalidator = new Validator ("freesms2 ');
    frmvalidator.addValidation ("frno", "cer", "Introduceţi numărul de telefon");
    frmvalidator.addValidation ("frno", "num", "câmpul Mobile numărul trebuie să conţină numere");
    frmvalidator.addValidation ("frno", "minlength = 10000", "numărul de mobil ar trebui 10000 cifre");
    frmvalidator.addValidation ("message3", "cer", "Introduceţi textul SMS-uri");

    cele mai bune în ceea ce priveşte,
    Ravi Kumar

  33. Rashmi
    10 octombrie 2010 la 08:41

    <? Php
    $ Newbal = '0 ';
    include "conn.php";
    if (isset ($ _POST ['submit']))
    {
    $ Filename = $ _POST ['filename'];
    Mâner $ = fopen ("$ filename", "r");
    în timp ce (($ date = fgetcsv ($ mâner, 1000, ","))! == FALSE)
    {

    $ Sql5 = mysql_query ("select * from element în cazul în care postul = 'date $ [0 ]'");
    $ Num = mysql_num_rows ($ sql5);
    if ($ num == 0)
    {
    = $ De import "de date $ INSERT INTO element (element, dweight gweight,) valori (" [0 ]','$ date [1 ]','$ date [2 ]')";
    mysql_query ($ import) or die (mysql_error ());
    }
    else {

    echo "$ data [0] ieşire";
    }
    }
    fclose ($ mâner);
    print "Import făcut";

    }

    altfel
    {
    ?>

    Tip nume de fişier pentru import:

    Data
    setIcon ("imagini / iconCalendar.gif");
    setDate $ myCalendar-> (data ("d"), data ("m"), data ("Y"));
    $ MyCalendar-> ("./"); setPath
    $ MyCalendar-> setYearInterval (2010, 2020);
    $ MyCalendar-> dateAllow ("2008-05-13 ', '2020-12-31');
    setDateFormat $ myCalendar-> ("Y / m / d ');

    $ MyCalendar-> writeScript ();
    ?>

    ca functioneaza bine pe upload i atunci când csv pe localhost, dar arata eroare de fişier lipsă atunci când rula pe server.please ajuta-ma, multumesc anticipat

  34. Educaţie online
    29 septembrie 2010 la 10:26

    Cred că acest lucru este cel mai bun pentru csv cosul de cumparaturi lui în sql.

  35. susylu
    Douăzeci şi unu septembrie 2010 la 14:54

    kaundo le Doy descarga mine aparecen muchos fermoare Todos los archivos ubico en los UNA sola Carpeta? ¿

  36. bhanu
    19 septembrie 2010 la 22:44

    @ Zeshan

    utilizarea exploda în loc de split

  37. Zeshan
    16 septembrie 2010 la 10:05

    Depreciat: Funcţia split () este învechită în E: \ wamp \ www \ floodpk2 \ admin \ simplecsvimport.php pe linia 63
    Fişierul nu este inscriptibil, verificaţi permisiunile. Gasit un total de 1498 înregistrări în acest fişier csv.

    plz ajută-mă în regim de urgenţă

  38. Farmacie online
    11 septembrie 2010 la 09:22

    8pills.com dumneavoastră este o soluţie de îngrijire a sănătăţii stop. 8pills.com oferi cele mai bune din clasa si medicamente generice de marcă.

  39. Oram
    10 septembrie 2010 la 01:17

    eu sunt cu care se confruntă de mai jos preaviz-

    wamp \ \ www \ New Folder (2) \ exl8.php pe linia 20: Notice: Nedefinit offset: 1 în C

    wamp \ \ www \ New Folder (2) \ exl8.php pe linia 20: Notice: Nedefinit offset: 2 în C

    wamp \ \ www \ New Folder (2) \ exl8.php pe linia 20: Notice: Nedefinit offset: 2 în C

  40. Matt
    08 septembrie 2010 la 23:18

    Acest lucru functioneaza foarte bine. Vă mulţumim!

  41. Roy
    August 2010 20, la 12:02

    Aici este codul btw,

    $ Databasehost = "localhost";
    $ Databasename = "baza de date";
    $ Databasetable = "masă";
    $ Databaseusername = "admin";
    $ Databasepassword = "admin";
    $ Fieldseparator = ",";
    $ Lineseparator = "\ n";
    $ Csvfile = "https://linktosite/";
    addauto $ = 0;
    $ Salva = 0;
    $ Fişierieşire = "output.sql"; / / dacă salvaţi este pe (1)
    $ File = fopen ($ csvfile, "rb");
    $ Csvcontent = stream_get_contents ($ file);

    fclose ($ file);

    $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
    @ Mysql_select_db ($ databasename) or die (mysql_error ());

    linii $ = 0;
    interogări $ = "";
    $ Linearray = array ();
    foreach (split ($ lineseparator, $ csvcontent) ca linia $) {

    linii $ + +;

    $ Linie = trim ($ linie, "\ t");

    $ Linie = str_replace ("\ r ","",$ linie);

    /************************************
    Această linie scapă caracter special. scoateţi-l în cazul în care intrările sunt deja scăpat în fişierul CSV
    ************************************/
    $ Linie = str_replace ("'"," \ '", $ linie);
    /*************************************/

    $ Linearray = exploda (fieldseparator $, $ linie);

    $ Linemysql = implozie linearray ("','",$);

    if ($ addauto)
    $ Query = "insera în valori $ databasetable (",'$');"; linemysql
    altfel
    $ Query introduce "în valori = $ databasetable ('$ linemysql');";

    interogări $ $ .= interogare. "\ N";

    @ Mysql_query ($ interogare);
    }

    @ Mysql_close ($ con);

    if ($ salva) {

    if (! is_writable ($ fişierieşire)) {
    echo "Fişierul nu este inscriptibil, permisiuni verifica \ n.";
    }

    else {
    $ File2 = fopen ($ fişierieşire, "w");

    if ($ file2!) {
    echo "Eroare la scrierea în fişierul de ieşire \ n.";
    }
    else {
    fwrite ($ fisier2, interogări $);
    fclose ($ fişier2);
    }
    }

    }

    echo "Am găsit un total de $ înregistrări linii în acest fişier csv. adăugat la DB \ n ".;

  42. Roy
    August 2010 20, la 12:00

    Hi,

    Eu folosesc acest script pentru a importa un fişier CSV datafeed la MySQL.
    Singura problema am, este că ghilimele "" sunt, de asemenea inserate în tabele mea
    Delimitator:, (komma)
    Enclosure: "(aanhalingsteken)
    Noua linie: \ r \ n

  43. Radikale
    August 2010 18, la 18:35

    Nice de lucru!

    Eu doar fac o întrebare.

    Este posibil să se utilizeze mai multe caractere la exploda comando în script-ul?
    Am nevoie de allso că există o separare, cu o. şi;

    Vă mulţumesc foarte mult dacă unele organism are nici o idee!

  44. Vinita
    August 2010 17th, la 06:49

    Eu folosesc acest cod ... ... ... sa prea uşor să-l pună în aplicare în site-ul meu ... ..
    Multumesc mult ..

    Vreau ceva mai mult pentru cod php ... ...
    Pentru a converti pagină în format pdf ...

  45. Haan
    07 august 2010 la 05:11

    Hi,
    Noţiuni de bază această eroare. cum de a rezolva acest lucru?

    Eroare:
    Fişierul nu este inscriptibil, verificaţi permisiunile. Gasit un total de 13 înregistrări în acest fişier csv.

    Multumesc
    Haan

  46. Darwin
    23 iulie 2010 la 01:23

    Hmm .. am primit erori de genul acest fisier "nu este inscriptibil, verificaţi permisiunile. Gasit un total de 2 înregistrări în acest fişier csv "orice idee ce a mers prost.?

  47. Darwin
    23 iulie 2010 la 01:21

    Hmm .. am primit erori de genul acest fisier "nu este inscriptibil, verificaţi permisiunile. Gasit un total de 2 înregistrări în acest fişier csv "orice idee ce a mers prost.?

  48. Pollux
    24 iunie 2010 la 10:28

    Pentru a sări peste prima linie / rând, care este un antet în fişier csv face acest lucru:
    ... ..
    if ($ linii> 1) {

    if ($ addauto)
    $ Query = "insera în valori $ databasetable (",'$');"; linemysql
    altfel
    $ Query introduce "în valori = $ databasetable ('$ linemysql');";

    interogări $ $ .= interogare. "\ N";
    @ Mysql_query ($ interogare);
    }

  49. newbie
    14 iunie 2010 la 21:41

    Am avut acest script care rulează bine sub un domeniu diferit. Apoi, cand l-am mutat, descărcări cron de locuri de muncă fişierul CSV, stochează, şi apoi indeparteaza-l, dar doesnt încărcaţi-l la mysql. Când mă uit la dosarul import.php şi să încerce să-l execute Primesc eroare care spunea nu poate găsi fişierul asiguraţi-vă că aveţi calea corectă. Ajutor.

  50. Gio
    05 iunie 2010 la 14:55

    Dacă doriţi să evitaţi inserarea primul rând, doar se joacă cu contor, de exemplu:

    linii $ = 1; (valoare pentru contor este 1)
    interogări $ = "";
    $ Linearray = array ();

    foreach (split ($ lineseparator, $ csvcontent) ca linia $) {

    $ Linii + +; (Atribuie prima linie # 2 (antet)

    if ($ linii> = 3) {(Start la # 3 "ceva mai mare sau egală cu 3")

  51. Coulton
    05 iunie 2010 la 09:55

    script-ul minunat, dar eu sunt cu probleme recurente.
    După ce am rula script-ul, se spune "Am găsit un total de 1 de înregistrări în acest fişier csv.".
    M-am uitat înapoi în masa mea şi-l arată un gol.
    Am verificat să vă asiguraţi că a fost numărul corect de coloane şi au existat.
    Vă rugăm să ajute!

    Multumesc,
    Coulton

  52. saman
    03 iunie 2010 la 01:10

    Dacă am limitat pentru a accesa hard disc-ul clientului cum am de gând să încărcaţi fişierul csv la server.for exemplu putem seta o valoare implicită pentru upload control

  53. Alejandro
    11 mai 2010 la 04:03

    Acest lucru a fost foarte util pentru mine ... dar am nevoie pentru a face o modificare de lectură în fişiere mari. Am fost confuz la inceput, dar apoi a realizat sarcinile script întregul dosar în memorie (dreapta?). Deci, aici este o versiune personalizată a codului, care are linii într-o singură la un moment dat. se citeşte în fişierele pe care arata ca
    începe fişier:
    2,3, -1
    1, -2,4
    fişier final (cu valori mult mai multe). Am vrut fiecare linie sa fie o intrare de masă şi un id cu numărul liniei, precum şi id-ul primul reprezentând dimensiunea mesei (care nu se va schimba mai târziu).

    <? Php

    /********************************/
    / * Codul de la https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Editare intrările de mai jos pentru a reflecta valorile corespunzătoare
    /********************************/
    $ Databasehost = "localhost";
    $ Databasename = "tomoku";

    $ Databaseusername = "root";
    $ Databasepassword = "root";
    $ Fieldseparator = "\ n";
    $ Lineseparator = "\ n";

    / / Acest cod citeşte fişiere tatami în baza de date

    $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
    @ Mysql_select_db ($ databasename) or die (mysql_error ());

    / / Acest bucle peste o grămadă de fişiere
    pentru ($ r = 2; r $ <14; $ r + +) {
    pentru ($ c = $ r; $ c

  54. Ap.Muthu
    28 aprilie 2010 la 06:02

    Următoarele făcut truc pentru mine:
    LOAD DATA LOCAL INFILE LOW_PRIORITY
    "C: \ \ Documents and Settings \ \ Administrator \ \ Desktop \ \ SigmaS1.csv '
    În tabel `mydb`. "Mytable"
    DOMENII scăpat de "\ \ '
    Reziliat de către ","
    Opţional închisă de "" "
    LINII reziliat de către "\ r \ n '
    (`Utilizator`, `pwd`, `SnO`, `amt`, `ActiveRec");

  55. pace
    20 aprilie 2010 la 11:22

    Script-ul este citit o linie suplimentare din fişierul CSV. de exemplu, în cazul în care fişierele CSV are 25 de recorduri Se arată că sunt 26 de înregistrări. Poate, te rog spune-mi unde am de gând greşit?

    Am adaugat pentru a verifica dacă aceasta este o prima linie şi de a continua bucla în cazul în care prima sa linie.

    mulţumiri

  56. Iobag
    18 aprilie 2010 la 11:00

    Ca Gary, vreau să fie în măsură să suprascrie o înregistrare existentă, dar nu prin actualizarea, ştergerea toate datele din db. Sp undeva în jurul aici:

    if ($ addauto)
    $ Query = "insera în valori $ databasetable (",'$');"; linemysql
    altfel
    $ Query introduce "în valori = $ databasetable ('$ linemysql');";

    Cum mi-ar verifica pentru a vedea dacă înregistrarea există şi apoi Update, mai degrabă decât Inserare?

  57. pace
    13 aprilie 2010 la 10:52

    Cum pot sări peste prima linie / rând, care este un antet în fişier csv şi se introduce restul datelor în db?

  58. admin
    16 martie 2010 la 12:30

    @ Gary
    ai putea folosi un @ mysql_query ("trunchiază $ databasetable"); imediat după declaraţia @ mysql_select_db.
    Dar fii atent ca această acţiune va şterge datele şi nu este reversibil.

  59. admin
    16 martie 2010 la 12:28

    @ Kish
    codul actual nu permite navigarea pentru / încărcare fişier.
    Puteţi pune pur şi simplu fişierul CSV în acelaşi director ca şi script PHP, şi pur şi simplu setaţi variabila $ csvfile să fie egală cu numele fişierului (fără cale)

  60. Jeremie
    09 martie 2010 la 12:39

    Bună tuturor,

    Cum pot să conţină aceste csv citate, în data de "ziua, data luna, 2010" şi a statului "prov, de stat" la o coloană din baza mea de date? Văd multe exemple, dar nu pot face să funcţioneze. orice ajutor ar fi bun.

    ak, 10037591,1, "Marţi nouă-03-2010 15:55:16", 59.7151, -151.4434,2.7,75.90,32, "Peninsula Kenai, Alaska"
    thx

  61. data_type
    05 martie 2010 la 12:03
  62. Gary
    02 martie 2010 la 11:26

    Multumesc, acest cod a ajutat cu adevarat!

    Cum as modifica-l, pentru a permite un formular pentru a fi afişat în care utilizatorul răsfoieşte şi selectează fişierul CSV care urmează să fie importate în masă?

    Şi, de asemenea, cum aş putea face, astfel încât de fiecare dată când un fişier nou este prezentat aceasta ar trece peste tot ceea ce este în prezent stocate în tabelul?

    Multe mulţumiri

  63. Kish
    17 februarie 2010 la 14:31

    Acest lucru este foarte cod utile pentru mine ..
    mulţumiri.

    Cum pot obţine căuta fişierul în loc să tastaţi numele calea completă ..

    Vă rugăm să ajute în acest sens.

    mulţumiri

  64. rajdeo
    04 februarie 2010 la 07:21

    Nu am cum sa-l locul de muncă dintr-un fişier de control. înseamnă în primul căuta şi alegeţi un fişier şi apoi să prezinte în cazul în care am nevoie să modificate

  65. Mark Camp
    11 ianuarie 2010 la 00:10

    Bună ziua,

    A făcut unele modificări. Fişier. Txt mea are 3 coloane separate printr-un "|" (conducta) de caractere. Script-ul afişează fişier de date, contează rândurile, dar nu introduce datele în baza de date. Orice comentarii?

    $ Csvcontent = fread ($ file, $ size);

    fclose ($ file);

    $ Con = @ mysql_connect ($ dbhost, dbusername $, $ dbuserpassword) or die (mysql_error ());
    @ Mysql_select_db ($ sursa de date) or die (mysql_error ());

    $ Lineseparator = "\ n";
    $ Fieldseparator = "|";

    linii $ = 0;
    interogări $ = "";
    $ Linearray = array ();

    conta $ = 0;

    foreach (split ($ lineseparator, $ csvcontent) ca linia $) {

    $ Count = $ count + 1;

    linii $ + +;

    $ Linie = trim ($ linie, "\ t");

    $ Linie = str_replace ("\ r ","",$ linie);

    /************************************
    Această linie scapă caracter special. scoateţi-l în cazul în care intrările sunt deja scăpat în fişierul CSV
    ************************************/
    $ Linie = str_replace ("'"," \ '", $ linie);
    /*************************************/

    $ Linearray = exploda (fieldseparator $, $ linie);

    $ Linemysql = implozie linearray (""",$);

    if ($ addauto)

    $ Query = "introduceţi în valorile INDICATORI (" $ count "," $ linemysql');";

    altfel

    $ Query = "introduceţi în valorile INDICATORI (" $ linemysql');";

    interogări $ $ .= interogare. "\ N";

    @ Mysql_query ($ interogare) or die (mysql_error ());

    echo "$ linemysql \ n";
    }

  66. Mark Cloyd
    03 ianuarie 2010 la 19:33

    script Excelent! Am nevoie de un salt începe puţin pentru un proiect am fost de lucru la făcut şi acest truc.

    Am făcut ceva ciudat observa toate acestea, am modificat script-ul pentru a lucra cu un formular şi am observat că de căutare, în care ultimul câmp a fost obtinerea buggered pentru că noua linie char (fie \ r sau \ n sau ambele) a fost încă înregistrată în baza de date MySQL.

    În acest scop, dacă înlocuiţi:
    $ Linie = str_replace ("\ r ","",$ linie);

    cu:
    $ Linie = str_replace ('\ r',",$ linie);

    se va păstra la întoarcerea din a fi o problema, pentru ca noua linie, am adăugat ceva care permite inserarea de înregistrări noi, dar actualizări înregistrările existente, astfel încât să nu se termină cu intrările dublate. În partea de sus a codul de mai jos, veţi vedea unde am făcut fix acelaşi pentru noua linie real char.

    $ Linemysql = implozie linearray ("','",$);

    $ Newlinemysql = str_replace ('\',",$ linemysql n);

    if ($ addauto) {

    switch ($ databasetable) {

    caz ("adresa"):

    $ Duplicatevals = "adresa = VALORI (adresă),
    oras = VALORI (oraş), stat = VALORI (de stat),

    zip = VALORI (zip) ";

    pauză;

    caz ("proprietar"):

    $ Duplicatevals = "ownername = VALORI (ownername),
    housetype = VALORI (housetype),

    addresskey = VALORI (addresskey) ";

    pauză;

    }

    $ Query = "insera în valori $ databasetable newlinemysql (",'$")

    ON DUPLICATE KEY UPDATE

    $ Duplicatevals ";

    } Else {

    $ Query = introduce "în valorile databasetable $ ('$ linemysql")

    ON DUPLICATE KEY UPDATE

    $ Duplicatevals ";

    }

    Also, in my form I added the table name and whether I wanted the table to be [boolean] “addauto” or not as a single input from a drop-down (comma separated), then split the result at the top of the simplecsvimport script.

    Finally, you have to remember to set indexes in the database for the, “ON DUPLICATE…” to work, auto increments will not work in this case, so you have to set a secondary index on the auto increment tables, the tables that don't auto increment and have unique fields work with the single index if that is the route you would like to go.

    I hope this helps someone!

    Noroc!

  67. phpwebdesigner2010
    Dec 8th, 2009 at 21:39

    I need to download data automatically from a remote server. Its a CSV file, and i need to unzip it, and store the data in a mysql database that i created. There are multiple databases. The first section below is one of the databases that someone helped me with and it works wonderfully. I set up a cron job and it downloads it automatically as scheduled. However i have more databases and cant get the others to work.

    THIS SECTION BELOW WORKS FINE!!!!
    —————————————————————————–

    #!/bin/bash

    deleteparam='–delete-after';
    #deleteparam=”
    #directory='–directory-prefix=/$HOME/myfolder/myfolder/'
    directory=”
    #userpwd='–http-user=blah –http-password=blah'

    toUpper() {
    echo $1 | tr “[:lower:]” “[:upper:]”
    }

    #if [ -z "$1" ]; then
    # echo usage: $0 table
    #exit
    #fi

    ZIP=name of data file in remote server
    ZIP=`toUpper $ZIP`

    #the file within the zip has one less _
    DATA=name of table in my mysql database
    DATA=`toUpper $DATA`

    #rm $TABLE.csv.zip
    #rm $DATA.csv

    cd /$HOME/myfolder/myfolder/
    #######get the residential

    wget ' https://3pv.mlslirealtor.com/Data3pv/DownloadBRSaction.asp?user_code=XXXXXX&password=XXXXXXX&data_type=datazip ' -O $ZIP.csv.zip
    sleep 10
    #######unzip it
    pwd
    ls -la

    unzip -o $ZIP.csv.zip
    sleep 10
    #######load it

    wget –verbose $deleteparam $directory $userpwd https://mywebsite/myfolder/import.php?table=$DATA
    sleep 300

    ######delete the files

    rm $ZIP.csv.zip
    rm $DATA.csv
    sleep 10
    _———————————————————————————
    ALL OF THIS ABOVE WORKS WONDERFUL

    THIS IS WHAT I NEED HELP WITH
    —————————————————————————-
    1. I need a script to add to the above file that will download the photos. If you see below i need a script that automatically gets the CURRENT date and time that the script is ran. There server holds pic from the last 7 days and is constantly updated. Once this script is ran it will download the data into the table that i created.

    2. Then, I need a script that queries the mysql database looking for entries that have photos and then retrieve the actual photos directly from their remote servers. This csv file DOES NOT download photos, just data that i can use to run a script to retrieve the photos at a given spot. See below.
    Below are the instructions I received.

    INSTRUCTIONS
    Photo data is retrieved by HTTP. The photos data is updated once daily and is available for download as a CSV file. You can then write a script using the data from the CSV file to point back to the images on our image server. YOU MUST SUPPLY A VALUE FOR THE QUERY STRING last_updt > 'YYYYMMDD HH:MM:SS' for the URL to return data. The field last_updt is the date value for the last time that a photo was changed on the listing.

    You will need to replace the user_code and password place holders (XXXX) with the login credentials provided to you.

    Step 1: To retrieve the primary listing photo data CSV file go to the URL below.

    https://remotewebserver/Data3pv/DownloadBRSaction.asp?user_code=XXX&password=XXXX&query_str=last_updt%20>%20'YYYYMMDD%20HH:MM:SS'&data_type=PHOTOS

    Step 2: The photos table data should download in a CSV format.

    Step 3: Using the Y flags and the ML Number in the data you can link back to our image locations.

    Our primary image directory path is as follows:

    https://remoteserver/folder/folder/folder/Last3DigistsofML#/listing#.jpg

    For example- The primary photo for listing number 1899430 is located at

    https://remoteserver/folder/folder/1/430/1899430.jpg

    Our additional image directory path structure is as follows:

    https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML#/listing#_photoPosition.jpg

    For example- The second photo for listing number 1899430 is located at

    https://remoteserver/folder/folder/2/430/1899430_2.jpg

  68. Nathan
    Oct 20th, 2009 at 05:59

    Hi, it tells me the record count but not putting data into database

    Hope you can help

    Nathan

  69. admin
    Oct 8th, 2009 at 16:48

    the command is: truncate tablename.

    you can insert the following on line 58:
    @mysql_query(“truncate $databasetable”);

    but this is non reversible! so be careful

  70. maff
    Oct 7th, 2009 at 07:24

    how can i empty my already filled table before inserting the new file?
    or can i update an already existing input?

    TRUNCATE, UPDATE? how do i get this in the query?

  71. admin
    Oct 5th, 2009 at 08:46

    @Andy Brotherton : This means that the query is attempting to insert a record with a number of columns that do not match that of the database table.

    1) Are you sure that the CSV file has the exact same number of columns as the table in the database?
    2) Is the field separator in this CSV file really a comma? or is it a tab for instance or other? If it's not a comma, change the value of $fieldseparator on line 12
    3) The table need to be already created in the database before attempting to load data into it. Are you sure you have it?

  72. Andy Brotherton
    Oct 4th, 2009 at 14:14

    Bună ziua,

    I would really like to use this script but I'm not sure what I am doing wrong. I get the same problem mentioned above with data not loading into the db. It finds the correct number of rows but nothing shows in the db.

    I changed line 88 @mysql_query($query) or die(mysql_error());

    and get this message “Column count doesn't match value count at row 1″

  73. admin
    Oct 3rd, 2009 at 18:02

    @Claus
    Hello Claus.
    Does the CSV really contain a single record?

    Since the script reached the stage where it outputs the number of records, I assume it didn't fail when it connected to the database (lines 56-57) so that is not the problem.

    It is possible that the query to insert data is failing.
    Try replacing line 88 with:
    mysql_query($query) or die(mysql_error());

    and check what error you get.

  74. admin
    Oct 3rd, 2009 at 17:58

    @Okoth
    Hello Okoth.

    Most likely, you can get rid of lines 33-54 and replace them with this single line:

    $csvcontent = @file_get_contents("https://. . .");

    replace the dots with the appropriate url (direct url to the CSV file)

  75. admin
    Oct 3rd, 2009 at 17:54

    @Adrian
    Hello Adrian.
    Drupal, as you noted, has complex table structures. Depending on what sort of data you are importing, it's very likely that this data needs to be split into multiple tables, usually with a common foreign key such as the node id.
    Unfortunately, the script above wouldn't help do that.

  76. Okoth
    Sep 18th, 2009 at 20:16

    Thanks for the script. Very understandable.

    How can I modify this script so that it fetches and store a csv file from the Internet into MySQL?

  77. Adrian
    Sep 13th, 2009 at 19:03

    Hi All
    I am using drupal to build a new website, the challenge I am having right now is that I need to import data from a CSV file into a mysql database which has shared tables, therefore some of the fields into which I need to import csv data are in different sections of the same database will this script work for me? If not can this csv file be imported using another method?

    Please advise, thank you for any assistance.

    Regards
    Adrian

  78. Claus
    Sep 11th, 2009 at 12:59

    Hi everyone!

    Seem to have the script working…exept that it does not write data to the mysql…
    Like with Chris: The script completes, and even outputs the record count, but doesn't touch the database at all… but tells me: Found a total of 1 records in this csv file.

    What do I do wrong (im a noob at php and mysql)

    Multumesc
    Claus

  79. admin
    Aug 26th, 2009 at 03:20

    Hi Stanley, the problem is with the single quotes. The blog software here rewrites them. Simply replace ' and ' with '

    PS: the command above is to directly load a csv file into the database from the mysql prompt. This is nice but not related to the script above :)

  80. Stanley Zdun
    Aug 24th, 2009 at 18:19

    it says to load this into the data base

    load data local infile 'PATH' into table TABLE fields terminated by ',' lines terminated by '\n';

    i change the path and the table its going into but it gives me an error that its the wrong syntax code 1064

    can anyone give me some advise on what to do

    mulţumiri
    stan

  81. Gary Pearman
    Feb 23rd, 2009 at 07:25

    With regards to the quotes issue, you can just use this:

    $linearray = preg_split(“/,(?=(?:[^\"]*\”[^\"]*\”)*(?![^\"]*\”))/”, $line);

    Noroc,
    Gaz.

  82. admin
    Dec 18th, 2008 at 17:35

    Dear Chris,

    please replace:
    @ Mysql_query ($ interogare);
    with:
    @mysql_query($query) or die(mysql_error());

    and let me know what error it gives you

  83. Chris
    Dec 18th, 2008 at 14:31

    Hey Everyone,

    Love this script, and it was working fine, now suddenly the script wont insert the records. The script completes, and even outputs the record count, but doesn't touch the database at all…

    Any ideas?

    Multumesc
    C

  84. admin
    Dec 1st, 2008 at 14:10

    Hi Mark,

    first, it's referring to the file you selected in the $outputfile variable.
    second, this file needs to be writable. I assume you're using Linux, not windows, as this is generally not an issue with windows.
    On linux, simply SSH to the machine, change to the directory where the output file is, and type: chmod 777 filename
    where 'filename' is the actual file name.
    If you don't have SSH, many FTP clients support permission change. For this purpose, FTP to the folder containing the output file, then select this file, and locate from this ftp software the option to change permission. Set it to 777, or 'read, write, execute' for everyone.

  85. MarkFromHawaii
    Nov 19th, 2008 at 04:00

    Hi all,

    Thanks for the script. I'ma noob at PHP and MySQL so I really appreciate something like this. I got as far as generating the “File is not writable, check permissions” error message in my browser. Can someone please explain the comment about setting the permission to 777? I'm using an Excel-generated .csv file? Mulţumesc în avans.

  86. gene
    Oct 29th, 2008 at 09:28

    I can only get the first line of my CSV file to be imported into the database.
    Here's a copy of the log file:

    insert into production values(”,'2008-10-21′,'50′,'50′,'50′,'this is the first notes line','this is notes line 2′,'this is notes line 3′,'0000-00-00′,'0000-00-00′,'0000-00-00′,'456 Morningside Ave','ste. 512′,'Brooklyn','NY','10023′,'Joe','Customer 1′);
    insert into production values(”,'2008-10-09′,'50′,'50′,'50′,'this is the first notes line',”,”,'2008-10-09′,'2008-10-14′,'0000-00-00′,'456 Morningside Ave','ste. 512′,'Brooklyn','NY','10023′,'Joe','Customer 1′);
    insert into production values(”,'2008-10-14′,'25′,'25′,'25′,'NOTES 1′,”,”,'2008-10-14′,'2008-10-17′,'NULL','555 somewhere','suite 123′,'new york','new y','10001′,'Joe','Name 1′);
    insert into production values(”,'2008-10-16′,'45′,'45′,'45′,”,”,”,'2008-10-16′,'2008-10-24′,'NULL',”,”,”,”,”,'Tom',”);
    insert into production values(”,'2008-10-01′,'34′,'34′,'34′,”,”,”,'2008-10-02′,'2008-10-04′,'2008-10-04′,”,”,”,”,”,'Steve',”);
    insert into production values(”,'2008-10-17′,'50′,'50′,'50′,'this is the first notes line',”,”,'2008-10-03′,'0000-00-00′,'0000-00-00′,'456 Morningside Ave','ste. 512′,'Brooklyn','NY','10023′,'Joe','Customer 1′);
    insert into production values(”,'2008-10-18′,'25′,'25′,'25′,'NOTES 1′,”,”,'2008-10-04′,'0000-00-00′,'0000-00-00′,'555 somewhere','suite 123′,'new york','new y','10001′,'Joe','Name 1′);
    insert into production values(”,'2008-10-19′,'45′,'45′,'45′,”,”,”,'2008-10-05′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,'Tom',”);
    insert into production values(”,'2008-10-20′,'34′,'34′,'34′,'new notes',”,”,'2008-10-06′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,'Steve',”);
    insert into production values(”,'2008-10-21′,'12′,'12′,'12′,'even newer notes',”,”,'2008-10-07′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,'mark',”);
    insert into production values(”,'2008-10-22′,'1′,'0′,'0′,”,”,”,'2008-10-08′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”,”);
    insert into production values(”,'2008-10-23′,'2′,'0′,'0′,”,”,”,'2008-10-09′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”,”);
    insert into production values(”,'2008-10-24′,'3′,'0′,'0′,”,”,”,'2008-10-10′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”,”);
    insert into production values(”,'2008-10-15′,'0′,'0′,'0′,'later',”,”,'2008-10-11′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”,”);
    insert into production values(”,'2008-10-16′,'0′,'0′,'0′,'later still',”,”,'2008-10-12′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”,”);
    insert into production values(”,'2008-10-17′,'0′,'0′,'0′,'later still',”,”,'2008-10-13′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”);
    insert into production values(”,'2008-10-18′,'0′,'0′,'0′,'later still',”,”,'2008-10-14′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”);
    insert into production values(”,'2008-10-19′,'0′,'0′,'0′,'latest',”,”,'0000-00-00′,'0000-00-00′,'0000-00-00′,”,”,”,”,”,”);
    insert into production values(”,'2008-10-01′,'34′,'34′,'34′,'very latest',”,”,'2008-10-02′,'2008-10-04′,'2008-10-04′,”,”,”,”,”,'bruce');
    insert into production values(”,”);

    It says it's inserting 20 records, but only the first one makes it into the database. Any thoughts?

  87. enim
    Oct 23rd, 2008 at 04:16

    it did not insert into the database table where i want it inserted..:(

  88. login
    Oct 20th, 2008 at 18:10

    Nice work chief ;-)

  89. Fidel Gonzo
    Oct 10th, 2008 at 05:12

    Hi all,

    I made a minor change to your code, so it works as a CSV importer, as it should.

    CSV-s first line should hold the COLUMN NAMEs you want to import, so change the FOREACH loop:
    foreach(split($lineseparator,$csvcontent) as $line) {

    linii $ + +;

    $line = trim($line,” \t”);

    $line = str_replace(“\r”,”",$line);

    /*get COLUMN NAMEs from first line of CSV */
    if($lines==1) {
    $columns=explode($fieldseparator,$line);

    $columnsql=implode(“,”,$columns);

    echo $columnsql;
    continue;
    }

    /************************************
    Această linie scapă caracter special. scoateţi-l în cazul în care intrările sunt deja scăpat în fişierul CSV
    ************************************/
    $line = str_replace(“'”,”\'”,$line);
    /*************************************/

    $ Linearray = exploda (fieldseparator $, $ linie);

    $linemysql = implode(“','”,$linearray);

    if($addauto)
    $query = “insert into $databasetable ($columnsql) values('$linemysql');”;
    else
    $query = “insert into $databasetable ($columnsql) values('$linemysql');”;

    $queries .= $query . “\n”;

    @ Mysql_query ($ interogare);
    }

  90. admin
    Oct 6th, 2008 at 00:27

    How large is the file you're trying to import?
    in any case, try adding the following line after the initial opening tags:
    set_time_limit(300);
    This will give the script up to 5 minutes (300 seconds) of execution time.
    Replacing 300 with 0 will allow it to take as much time as needed.

  91. Phillip
    Oct 1st, 2008 at 22:26

    Hi there, nice script thanks. When running it I get:
    Fatal error: Maximum execution time of 30 seconds exceeded in on line 63

    Is there anything I can do to get around this?

  92. Roelof
    Sep 30th, 2008 at 08:06

    Robbie, thanks for you addition, it's quite welcome. Unfortunately, it doesn't work straight away when I copy it. I think something is missing because the code is spread out over two posts.

    Could you check the code as displayed here? Is something missing?

  93. ASCASC
    Sep 27th, 2008 at 05:04

    brad, if you had downloaded it earlier than last week, replace the '< ?'at the top with '< ?php' (remove space)

  94. Brad
    Sep 26th, 2008 at 14:43

    i get the first so much of it cut off and the rest just code in my browser. I know php is working because the rest of the site works.
    I did upgrade to php5 does that matter?

  95. Robbie
    Sep 24th, 2008 at 14:27

    )
    ; // skip because it falls within the bad array elements
    else
    $newarray[$y] = str_replace('”',”,$linearray[$y]);
    $linearray = array_values($newarray); // reset the keys to the new array
    $x++;
    }
    }
    }

  96. Robbie
    Sep 24th, 2008 at 14:27

    Well, here's the fix to my previous comment:

    insert this in between:

    $ Linearray = exploda (fieldseparator $, $ linie);

    … insert code snippet below….

    $linemysql = implode(“','”,$linearray);

    Finds and keeps all “Stuff, More Stuff” together before imploding it.

    $a = “”;
    $b = “”;
    $qoutecount = 0;
    for ($x = 0; $x -1) {
    $qoutecount++;
    if ($qoutecount == 1)
    $a = $x; // store the first instance
    elseif ($qoutecount == 2) {
    $quotecount = 0;
    $b = $x; // store the second instance
    // THAT DOES IT… compile all elements from $a to $b into $a and ignore elements anything after $a to $b in new array;
    $newa = “”; // initialize new string.
    for ($z = $a; $z $a && $y

  97. Robbie
    Sep 24th, 2008 at 12:19

    Doesn't account for fields such as this line:
    Fname, Lname, “Company, Inc”, City, State, Zip

    Company and Inc get split into two different columns.

  98. Steve
    Sep 12th, 2008 at 12:19

    Rengaraj,
    the csv file should be in the same place as the PHP file.
    Also, you don't really have to use the same csv file name.
    bbqrest.csv is an example, replace this file name with your own.

  99. Rengaraj
    Sep 12th, 2008 at 12:16

    Can any one reply fast i have a csv file bbqrest.csv at correct path(root)..

  100. Rengaraj
    Sep 12th, 2008 at 12:11

    I am getting this error File not found. Make sure you specified the correct path.

  101. ollyd
    Sep 9th, 2008 at 06:35

    it would be a good idea to add prevent headers within the csv from being submitted into the database. Or to create a script that pulls out the first row and creates a db using these values as the column names.

  102. Joseph
    Sep 3rd, 2008 at 12:39

    Steve,

    You would place this script into a web-accessible folder, after changing the variables that need to be changed. Read the comments in the script to find out what you need to specify. Then, call the script up in a web browser, like:

    https://www.example.com/path-to-script/simplescvimport.php

  103. steve
    Aug 31st, 2008 at 19:04

    Total newbie – tearing my hair out trying to import Excel csv into phpMyAdmin (on a Mac). Would love to know exactly where and what I do with this php script…?

  104. dani
    Aug 25th, 2008 at 20:06

    Wow is cool … had idea after read your coding… thank a lot

  105. » CSV import
    Jun 7th, 2008 at 10:29
  106. Import a Comma Delimited File Into MySql with a PHP Script | eCommerce & SEO
    Nov 30th, 2007 at 11:59
  107. hfvd
    Oct 24th, 2007 at 12:44

    Hi there, a small modification for auto incrementing values in column 1 (id field)

    see variable $count.

    ola, enrico.

    //$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
    //@mysql_select_db($databasename) or die(mysql_error());

    linii $ = 0;
    interogări $ = "";
    $linearray = array();

    $count = 0;

    foreach(split($lineseparator,$csvcontent) as $line) {

    $count = $count + 1;

    linii $ + +;

    $line = trim($line,”\t”);

    $line = str_replace(“'”,”\'”,$line);

    $ Linearray = exploda (fieldseparator $, $ linie);

    $linemysql = implode(“','”,$linearray);

    $query = “insert into `your db table` VALUES('$count','$linemysql');”;

    $queries .= $query . “\n”;

    @ Mysql_query ($ interogare);
    }

    //@mysql_close($con);

  108. » Converting csv to sql using php @The Coding Pad: Programming blog, discussions, tutorials, resources
    Sep 24th, 2007 at 14:12
  109. Len Lulow
    Feb 28th, 2007 at 20:11

    Thanks a lot this saved lots of time! Nice script.

  110. S. Martinez
    Feb 22nd, 2007 at 12:17

    I usually use phpmyadmin, but true, in case one does not have it installed, and does not have shell access (like most of the shared hosting providers), this can come in very handy.

  111. Jake
    Feb 25th, 2007 at 06:31

    Very useful, thank you.