script PHP pentru a importa date CSV în MySQL
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.
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!
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
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.
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.
@ Mark Cloyd
"Adresa = VALORI (adresa)
Primesc o eroare aici ca eroare Parse: eroare de sintaxă, neaşteptat '='
@ 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
@ 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,
@ Khaled A
Cum pot exporta UTF8 Excel la output.sql
mulţumiri
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?
Salut baieti, vrut doar să ştiţi cu toţii că am găsit pe cineva să-mi scrie programul actual am nevoie.
@ 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";
?>
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
@ 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
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?
Vă mulţumim pentru partajarea exceleze la mysql script-ul, acest lucru este foarte util pentru mine.
ya lucrărilor codul dar nw primesc datele mele închise în ghilimele @ Suman
@ Pruthvi
Hi,
Vă rugăm să folosiţi codul de mai jos dat ... ...
Grate Codul Este foarte util la toate dezvoltator PHP.
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
aceeaşi problemă cu mine @ Andrew Fish
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
codul se intoarce o declaraţie că aceasta a putut găsi fişierul CSV ...
Wat ar putea fi problema ....
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
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
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
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?
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
@ 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)
@ 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.
Având în exact aceeaşi problemă, poate cineva ajuta va rog?
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
<? 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
Cred că acest lucru este cel mai bun pentru csv cosul de cumparaturi lui în sql.
kaundo le Doy descarga mine aparecen muchos fermoare Todos los archivos ubico en los UNA sola Carpeta? ¿
@ Zeshan
utilizarea exploda în loc de split
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ţă
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ă.
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
Acest lucru functioneaza foarte bine. Vă mulţumim!
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 ".;
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
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!
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 ...
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
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.?
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.?
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);
}
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.
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")
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
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
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
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");
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
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?
Cum pot sări peste prima linie / rând, care este un antet în fişier csv şi se introduce restul datelor în db?
@ 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.
@ 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)
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
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
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
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
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";
}
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!
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
Hi, it tells me the record count but not putting data into database
Hope you can help
Nathan
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
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?
@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?
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″
@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.
@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)
@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.
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?
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
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
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
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
With regards to the quotes issue, you can just use this:
$linearray = preg_split(“/,(?=(?:[^\"]*\”[^\"]*\”)*(?![^\"]*\”))/”, $line);
Noroc,
Gaz.
Dear Chris,
please replace:
@ Mysql_query ($ interogare);
with:
@mysql_query($query) or die(mysql_error());
and let me know what error it gives you
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
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.
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.
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?
it did not insert into the database table where i want it inserted..:(
Nice work chief
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);
}
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.
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?
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?
brad, if you had downloaded it earlier than last week, replace the '< ?'at the top with '< ?php' (remove space)
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?
)
; // 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++;
}
}
}
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
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.
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.
Can any one reply fast i have a csv file bbqrest.csv at correct path(root)..
I am getting this error File not found. Make sure you specified the correct path.
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.
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
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…?
Wow is cool … had idea after read your coding… thank a lot
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);
Thanks a lot this saved lots of time! Nice script.
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.
Very useful, thank you.