PHP script per importare i dati csv in mysql
Si tratta di un semplice script che vi permetterà di importare i dati csv nel database. Questo è particolarmente utile perché si può semplicemente modificare i campi appropriati, caricarlo con il file csv e lo chiamano dal web e lo farà il resto.
Esso consente di specificare il delimitatore in questo file csv, se si tratta di una virgola, un ecc scheda Permette anche di scegliere il separatore di linea, consente di salvare l'output in un file (conosciuto come un dump dei dati sql).
Permette inoltre di inserire un campo vuoto all'inizio di ogni riga, che è solitamente un incremento automatico intero chiave primaria.
Questo script è utile soprattutto se non avete phpmyadmin, o non vuoi la seccatura di login e di preferire una soluzione di pochi clic, o semplicemente sono un ragazzo prompt dei comandi.
Basta assicurarsi che il tavolo è già stato creato prima di tentare di eseguire il dump dei dati.
Si prega di inviare i tuoi commenti se hai un bug report.

Molto utile, grazie.
Io di solito uso phpmyadmin, ma vero, nel caso in cui non si ha installata, e non ha accesso alla shell (come la maggior parte dei provider di hosting condiviso), questo può rivelarsi molto utile.
Grazie mille questa risparmiato un sacco di tempo! Script di Nizza.
[...] Ebbene, oggi voglio presentarvi un altro metodo per ottenere il vostro file csv in sql, utilizzando il codice PHP. Per questo pezzo di codice, il merito va a pieno leggenda. È necessario assicurarsi che il database è già creato prima di scaricare la data. /************************************************* *******************************************/ / Code * a http: / / legend.ws / blog / consigli-trucchi / csv-php-mysql-import / / * Modifica le voci qui sotto per riflettere i valori appropriati /****************** ************************************************** ************************/ databasehost $ = "localhost"; databasename $ = "test"; $ DATABASETABLE = "campione"; databaseusername $ = " prova "; databasepassword $ =" "; fieldseparator $ =" "; $ lineseparator =" n "; $ csvfile =" bbqrest.csv "; /***************** ************************************************** *************************/ / * Vuoi aggiungere un campo ampty all'inizio di questi record? / * Questo è utile se si dispone di una tabella con il primo campo è un intero auto_increment / * e il file csv non ha come campo vuoto prima del record. / * Set 1 per sì e 0 per il no. ATTENZIONE: non impostato a 1 se non siete sicuri. / * Questo può scaricare i dati nei campi sbagliato se questo campo aggiuntivo non esiste nella tabella /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Volete salvare le query mysql in un file? Se sì impostare $ risparmiare a 1. / * Autorizzazione sul file deve essere impostato a 777. O caricare un file di esempio tramite FTP e / * cambiare i permessi, o eseguire al prompt: tocco output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ risparmiare $ = 1; $ outputfile = "output.sql"; /*********** ************************************************** *******************************/ [...]
Ciao a tutti, una piccola modifica per i valori di incremento automatico nella colonna 1 (campo id)
vedere la variabile $ count.
ola, enrico.
/ / $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Righe = 0;
$ Query = "";
$ Linearray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Count = $ count + 1;
$ Righe + +;
$ Riga = trim ($ riga, "\ t");
$ Linea = str_replace ("'"," \ '", $ line);
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere ("','",$ linearray);
$ Query = "INSERT INTO` la tua tabella db `VALUES ('$ count', '$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
/ / @ Mysql_close ($ con);
[...] Su una nota simile, ecco un script prefabbricato, che il suo autore si dice importare un file CSV in MySql: script PHP per importare i dati csv in mysql. [...]
[...] /******************************************** ************************************************/ / * Codice di http://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / * Modificare le voci qui sotto per riflettere i valori appropriati /************* ************************************************** *****************************/ databasehost $ = "localhost"; $ databasename = "xxxxx"; $ DATABASETABLE = "xxxx" ; $ databaseusername = "xxxx"; $ databasepassword = "xxxx"; fieldseparator $ = ""; $ lineseparator = "n"; $ csvfile = "xport/2008_BF.csv"; /********* ************************************************** *********************************/ / * Vuoi aggiungere un campo ampty all'inizio di questi record ? / * Questo è utile se si dispone di una tabella con il primo campo è un intero auto_increment / * e il file csv non ha come campo vuoto prima del record. / * Set 1 per sì e 0 per il no. ATTENZIONE: non impostato a 1 se non siete sicuri. / * Questo può scaricare i dati nei campi sbagliato se questo campo aggiuntivo non esiste nella tabella /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Volete salvare le query mysql in un file? Se sì impostare $ risparmiare a 1. / * Autorizzazione sul file deve essere impostato a 777. O caricare un file di esempio tramite FTP e / * cambiare i permessi, o eseguire al prompt: tocco output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ risparmiare $ = 1; $ outputfile = "output.sql"; /*********** ************************************************** *******************************/ [...]
Wow ... è fresco aveva idea dopo aver letto il tuo codice ... ringrazio molto
Newbie totale - strappandomi i capelli tentando di importare Excel CSV in phpMyAdmin (su un Mac). Mi piacerebbe sapere esattamente dove e cosa devo fare con questo script php ...?
Steve,
Si sarebbe posto questo script in una cartella accessibile sul web, dopo aver cambiato le variabili che devono essere cambiati. Leggi i commenti nello script per scoprire che cosa è necessario specificare. Poi, chiamare lo script in un browser web, come:
http://www.example.com/path-to-script/simplescvimport.php
sarebbe una buona idea aggiungere prevenire intestazioni all'interno del CSV di essere presentate nel database. Oppure, per creare uno script che tira fuori la prima fila e crea un db utilizzando questi valori come i nomi delle colonne.
Ricevo questo errore file non trovato. Assicurati di specificare il percorso corretto.
Può uno veloce risposta ho un file csv a bbqrest.csv percorso corretto (root) ..
Rengaraj,
il file csv dovrebbe essere nello stesso posto del file PHP.
Inoltre, non hanno davvero a utilizzare lo stesso nome del file csv.
bbqrest.csv è un esempio, sostituire il nome del file con il vostro.
Non tiene conto per i campi come questa riga:
Fname, Lname "Società, Inc", Città, Stato, CAP
Società e ottenere Inc diviso in due colonne diverse.
Bene, ecco la correzione al mio commento precedente:
inserire questo tra:
$ Linearray = explode ($ fieldseparator, $ line);
... Inserire il frammento di codice qui sotto ....
$ Linemysql = implodere ("','",$ linearray);
Trova e mantiene tutti "Stuff, più cose" insieme prima di implodere esso.
$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x; / / store prima istanza
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x / / memorizzare la seconda istanza
/ / CHE FA ... compilare tutti gli elementi da $ a $ b in $ a ignorare gli elementi e tutto ciò dopo che $ a $ b nel nuovo array;
Newa $ = ""; / / inizializzare nuova stringa.
for ($ z = $ a, $ z $ a & & $ y
)
/ / Salta perché rientra in elementi dell'array male
altro
$ NuovoArray [$ y] = str_replace ('"',",$ linearray [$ y]);
$ Linearray = array_values ($ nuovoArray); / / reset le chiavi del nuovo array
$ X + +;
}
}
}
ottengo il primo nella misura in cui tagliare e il resto solo codice nel browser. So che php sta lavorando perché il resto del sito funziona.
Ho fatto l'aggiornamento a php5 che importa?
brad, se l'avesse scaricato in precedenza che la scorsa settimana, sostituire il '<?' in alto con '<? php' (togliere spazio)
Robbie, grazie per voi, inoltre, è ben accetto. Purtroppo, non funziona subito quando l'ho copia. Penso che manca qualcosa perché il codice si sviluppa su due pali.
Può controllare il codice che vedi qui? Manca qualcosa?
Ciao a tutti, grazie sceneggiatura piacevole. Quando è in esecuzione ottengo:
Fatal error: tempo di esecuzione massimo di 30 secondi superato in on line 63
C'è qualcosa che posso fare per aggirare questo?
Quanto è grande il file che si sta cercando di importare?
in ogni caso, provate ad aggiungere la seguente riga dopo il tag di apertura iniziale:
set_time_limit (300);
Questo darà la sceneggiatura fino a 5 minuti (300 secondi) di tempo di esecuzione.
Sostituendo 300 con 0 gli permetterà di prendere tutto il tempo, se necessario.
Ciao a tutti,
Ho fatto una piccola modifica al codice, quindi funziona come un importatore CSV, come dovrebbe.
CSV-s prima riga deve contenere i nomi delle colonne che si desidera importare, in modo da cambiare il ciclo foreach:
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Righe + +;
$ Riga = trim ($ riga, "\ t");
$ Linea = str_replace ("\ r linea ","",$);
/ * Ottiene i nomi delle colonne prima linea del CSV * /
if ($ righe == 1) {
$ Colonne = explode ($ fieldseparator, $ line);
$ Columnsql = implodere (",",$ colonne);
echo $ columnsql;
continuare;
}
/************************************
Questa linea sfugge il carattere speciale. rimuoverlo se le voci sono già fuggiti nel file csv
************************************/
$ Linea = str_replace ("'"," \ '", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ DATABASETABLE ($ columnsql) values ('$ linemysql');";
altro
$ Query = "INSERT INTO $ DATABASETABLE ($ columnsql) values ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
Opera principale di Nizza
non è stata inserita nella tabella di database in cui voglio che sia inserito ..: (
Posso solo ottenere la prima riga del mio file CSV da importare nel database.
Ecco una copia del file di registro:
inserire nei valori di produzione (", '2008-10-21 ', '50', '50 ', '50', 'questa è la prima linea note', 'questa è nota la linea 2', 'questa è la linea note 3 ', '0000-00-00', '0000-00-00 ', '0000-00-00', '456 Morningside Avenue ',' ste. 512 ',' Brooklyn ',' New York ', '10023', 'Joe', 'cliente 1');
inserire nei valori di produzione (", '2008-10-09 ', '50', '50 ', '50', 'questa è la prima linea note',",",' 2008/10/09', '2008 -10-14 ', '0000-00-00', '456 Morningside Avenue ',' ste 512 ',' Brooklyn ',' New York ', '10023', 'Joe', 'cliente 1').;
inserire nei valori di produzione (", '2008-10-14 ', '25', '25 ', '25', 'NOTE 1',",",' 2008/10/14', '2008-10-17 ',' NULL ', '555 da qualche parte', 'Suite 123', 'New York', 'nuovo y', '10001 ',' Joe ',' Nome 1 ');
inserire in produzione
inserire in produzione
inserire nei valori di produzione (", '2008-10-17 ', '50', '50 ', '50', 'questa è la prima linea note',",",' 2008/10/03', '0000 -00-00 ', '0000-00-00', '456 Morningside Avenue ',' ste 512 ',' Brooklyn ',' New York ', '10023', 'Joe', 'cliente 1').;
inserire nei valori di produzione (", '2008-10-18 ', '25', '25 ', '25', 'NOTE 1',",",' 2008/10/04', '0000-00-00 ', '0000-00-00', '555 da qualche parte ',' Suite 123 ',' New York ',' nuovo y ', '10001', 'Joe', 'Nome 1');
inserire in produzione
inserire nei valori di produzione (", '2008-10-20 ', '34', '34 ', '34', 'le nuove note',",",' 2008/10/06', '0000-00-00 ', '0000-00-00',",",",",",' Steve',");
inserire nei valori di produzione (", '2008-10-21 ', '12', '12 ', '12', 'note ancora più recente',",",' 2008/10/07', '0000-00- 00 ', '0000-00-00',",",",",",' marchio',");
inserire in produzione
inserire in produzione
inserire in produzione
inserire in produzione
inserire nei valori di produzione (", '2008-10-16 ', '0', '0 ', '0', 'più tardi ancora',",",' 2008/10/12', '0000-00-00 ', '0000-00-00',",",",",",",");
inserire nei valori di produzione (", '2008-10-17 ', '0', '0 ', '0', 'più tardi ancora',",",' 2008/10/13', '0000-00-00 ', '0000-00-00',",",",",",");
inserire nei valori di produzione (", '2008-10-18 ', '0', '0 ', '0', 'più tardi ancora',",",' 2008/10/14', '0000-00-00 ', '0000-00-00',",",",",",");
inserire in produzione
inserire nei valori di produzione (", '2008-10-01 ', '34', '34 ', '34', '',",",' più recenti 2008/10/02', '2008-10-04 ', '2008-10-04',",",",",",' bruce');
inserire nei valori di produzione (",");
Si dice che è l'inserimento di 20 record, ma solo il primo che fa nel database. Qualche idea?
Ciao a tutti,
Grazie per lo script. Sono un niubbo in PHP e MySQL in modo apprezzo qualcosa del genere. Ho avuto fino a generare il "File non è scrivibile, controllare le autorizzazioni" messaggio di errore nel mio browser. Qualcuno può spiegare il commento su come impostare il permesso a 777? Sto usando un Excel generato. Csv? Grazie in anticipo.
Ciao Marco,
primo, è il riferimento al file selezionato nella variabile $ outputfile.
secondo, questo file deve essere scrivibile. Presumo che stai usando Linux, non Windows, in quanto questo non è generalmente un problema con le finestre.
Su linux, semplicemente SSH per la macchina, cambiare la directory dove il file di output è, e digitare: chmod 777 nomefile
dove 'nomefile' è il nome del file effettivo.
Se non si dispone di SSH, FTP supportare i propri clienti molti cambiamenti permesso. A tal fine, FTP nella cartella contenente il file di output, quindi selezionare il file e individuare da questo software ftp la possibilità di cambiare il permesso. Impostarlo su 777, o 'leggere, scrivere, eseguire' per tutti.
Ciao a tutti,
Amore questo script, e stava lavorando bene, ora improvvisamente il copione solito inserire i record. La sceneggiatura completa, e anche le uscite il conteggio dei record, ma non tocca il database a tutti i ...
Qualche idea?
Grazie
C
Caro Chris,
si prega di sostituire:
@ Mysql_query ($ query);
con:
@ Mysql_query ($ query) or die (mysql_error ());
e fatemi sapere quale errore ti dà
Per quanto riguarda il problema citazioni, si può semplicemente utilizzare questo:
$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );
Cheers,
Gaz.
dice di caricare questo nella base di dati
dati di carico locali infile 'PATH' in campi TABLE denuncia da parte ',' righe che terminano con '\ n';
i modificare il percorso e la tabella suoi andando in ma mi dà un errore che la sua sintassi errata del codice 1064
qualcuno può darmi qualche consiglio su cosa fare
grazie
stan
Salve Stanley, il problema è con le virgolette singole. Il software blog qui li riscrive. Basta sostituire 'e' con '
PS: il comando precedente è quello di caricare direttamente un file csv nel database dal prompt mysql. Questo è bello, ma non legati allo script sopra
Ciao a tutti!
Sembrano avere il funzionamento dello script ... eccetto che non scrivere dati sul mysql ...
Come con Chris: La sceneggiatura completa, e anche le uscite il conteggio dei record, ma non tocca il database a tutti ... ma mi dice: Trovato un totale di 1 record in questo file csv.
Che cosa ho fatto di sbagliato (im un noob in php e mysql)
Grazie
Claus
Ciao a Tutti
Sto usando drupal per costruire un nuovo sito web, la sfida che sto avendo in questo momento è che ho bisogno di importare dati da un file CSV in un database mysql che ha condiviso le tabelle, quindi alcuni dei campi in cui ho bisogno di importare i dati csv si trovano in diverse sezioni dello stesso database sarà questo script lavoro per me? Se non è possibile questo file csv essere importato utilizzando un altro metodo?
Si prega di avvisare, grazie per qualsiasi tipo di assistenza.
Cordiali saluti
Adrian
Grazie per lo script. Molto comprensibile.
Come faccio a modificare questo script in modo che recupera e memorizza un file csv da Internet in MySQL?
@ Adrian
Ciao Adriano.
Drupal, come si è notato, ha strutture di tabelle complesse. A seconda che tipo di dati da importare, è molto probabile che questo dato deve essere suddiviso in più tabelle, di solito con una chiave estera comune, come l'id nodo.
Sfortunatamente, lo script di cui sopra non aiuterebbe farlo.
@ Okoth
Ciao Okoth.
Molto probabilmente, si può sbarazzarsi delle linee 33-54 e sostituirle con questa riga:
Csvcontent $ = @ file_get_contents ("http://...");
sostituire i punti con l'url appropriata (url diretto al file CSV)
@ Claus
Ciao Claus.
Il CSV in realtà contengono un singolo record?
Dal momento che lo script ha raggiunto la fase in cui essa stampa il numero di record, suppongo che non ha mancato quando connesso al database (righe 56-57) in modo che non è il problema.
E 'possibile che la query per inserire dati sta fallendo.
Provate a sostituire la linea 88 con:
mysql_query ($ query) or die (mysql_error ());
e verificare quale errore si ottiene.
Ciao,
Mi piacerebbe davvero utilizzare questo script, ma non sono sicuro di quello che sto facendo male. Ottengo lo stesso problema di cui sopra con i dati di non caricare nel db. Essa trova il numero corretto di righe, ma non mostra niente nel db.
Ho cambiato linea 88 @ mysql_query ($ query) or die (mysql_error ());
e questo messaggio "numero delle colonne non corrisponde al conteggio alla riga 1"
@ Andy Brotherton : Questo significa che la query sta tentando di inserire un record con un numero di colonne che non corrispondono a quella della tabella del database.
1) Sei sicuro che il file CSV ha lo stesso numero di colonne della tabella nel database?
2) Se il separatore di campo in questo file CSV davvero una virgola? o è una scheda per esempio o altro? Se non è una virgola, modificare il valore di $ fieldseparator sulla linea 12
3) La tabella devono essere già create nel database prima di tentare di caricare i dati in esso. Sei sicuro di averlo?
come faccio a svuotare la tabella già riempito prima di inserire il nuovo file?
o posso aggiornare un ingresso già esistente?
TRUNCATE, UPDATE? Come faccio ad avere questo nella query?
il comando è: nometabella troncare.
è possibile inserire on line i seguenti 58:
@ Mysql_query ("troncare $ DATABASETABLE");
ma questo non è reversibile! quindi state attenti
Ciao, mi dice che il conteggio dei record, ma non mettere i dati nel database
Spero che tu possa aiutare
Nathan
Ho bisogno di scaricare automaticamente i dati da un server remoto. Il suo un file CSV, e ho bisogno di decomprimerlo, e memorizzare i dati in un database mysql che ho creato. Non ci sono più database. La prima sezione che segue è uno dei database che qualcuno mi ha aiutato con e funziona meravigliosamente. Ho creato un cron job e lo scarica automaticamente come previsto. Tuttavia ho più database e cant ottenere gli altri a lavorare.
QUESTA SEZIONE DI SOTTO funziona bene!!
--------------------------
#! / Bin / bash
deleteparam = '-delete-after';
# Deleteparam = "
# Directory = '-directory-prefix = / $ HOME / MyFolder / myfolder /'
directory = "
# Userpwd = '-http-user = http bla-bla-password ='
toupper () {
echo $ 1 | tr "[: lower:]" "[: upper:]"
}
# If [-z "$ 1"], poi
# Echo utilizzo: tavolo $ 0
# Exit
# Fi
CAP = nome del file di dati nel server remoto
ZIP = `toupper $ ZIP`
# Il file all'interno del zip ha una minore _
DATI = nome della tabella nel mio database mysql
DATA = `toupper $ DATI`
# Rm $ TABLE.csv.zip
# Rm $ data.csv
cd / $ HOME / MyFolder / myfolder /
####### Ottenere il residenziale
wget -O $ ZIP.csv.zip
sleep 10
####### È unzip
pwd
ls-la
unzip-o $ ZIP.csv.zip
sleep 10
####### Caricarlo
wget-verbose deleteparam $ $ $ directory userpwd http://mywebsite/myfolder/import.php?table = $ DATI
sonno 300
###### Eliminare i file
rm $ ZIP.csv.zip
rm $ data.csv
sleep 10
_ ---------------------------
TUTTO QUESTO SOPRA opere meravigliose
ECCO COSA HO BISOGNO DI AIUTO CON
--------------------------
1. Ho bisogno di uno script da aggiungere al file di cui sopra che scaricare le foto. Se vedete qui sotto ho bisogno di uno script che viene automaticamente la data e l'ora che lo script viene eseguito. Ci server contiene foto degli ultimi 7 giorni e viene costantemente aggiornato. Una volta che questo script è eseguito lo scaricherà i dati nella tabella che ho creato.
2. Poi, ho bisogno di uno script che interroga il database mysql alla ricerca di voci che hanno foto e quindi recuperare le foto reale direttamente dal loro server remoti. Questo file CSV non scaricare foto, solo i dati che posso utilizzare per eseguire uno script per recuperare le foto in un punto determinato. Vedi sotto.
Di seguito sono riportate le istruzioni che ho ricevuto.
ISTRUZIONI
Photo dati vengono recuperati da HTTP. I dati di foto viene aggiornato una volta al giorno ed è disponibile per il download come file CSV. È quindi possibile scrivere uno script utilizzando i dati dal file CSV per puntare di nuovo alle immagini sul nostro server immagini. È necessario specificare un valore per il last_updt stringa di query> 'YYYYMMDD HH: MM: SS' per l'URL per restituire i dati. Il last_updt campo è il valore di data per l'ultima volta che una foto è stata modificata la lista.
Sarà necessario sostituire il user_code e segnaposto password (XXXX) con le credenziali di accesso fornito all'utente.
Fase 1: Per recuperare il primario foto lista di dati del file CSV andare all'URL di seguito.
Fase 2: I dati della tabella foto devono scaricare in formato CSV.
Fase 3: le bandiere Y e il numero di ML nei dati è possibile collegare di nuovo al nostro sedi immagine.
Il nostro percorso della directory principale dell'immagine è il seguente:
http://remoteserver/folder/folder/folder/Last3DigistsofML # / quotazione #. jpg
Per esempio-La foto principale per numero di lista 1899430 si trova a
http://remoteserver/folder/folder/1/430/1899430.jpg
Il nostro ulteriore struttura di directory immagine percorso è il seguente:
http://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / quotazione # _photoPosition.jpg
Per esempio-La seconda foto per il numero di lista 1899430 si trova a
http://remoteserver/folder/folder/2/430/1899430_2.jpg
Sceneggiatura eccellente! Avevo bisogno di un piccolo salto per iniziare un progetto su cui stavo lavorando e questo ha fatto il trucco.
Ho fatto qualcosa di strano notare però, ho modificato lo script di lavorare con un modulo e ho notato che per la ricerca, l'ultimo campo si stava inculata a causa della nuova linea char (sia \ r o \ n o entrambi) era ancora in fase di registrazione nel database MySQL.
A tal fine, se si sostituisce:
$ Linea = str_replace ("\ r linea ","",$);
con:
$ Linea = str_replace ('\ r linea',",$);
manterrà il ritorno dall'essere un problema, come per la nuova linea, ho aggiunto un po 'di qualcosa che permette l'inserimento di nuovi record, ma aggiorna i record esistenti, in modo da non finire con le voci duplicate. In cima il codice qui sotto, potrete vedere dove ho fatto la stessa soluzione per il carattere attuale nuova linea.
$ Linemysql = implodere ("','",$ linearray);
$ Newlinemysql = str_replace ('\ n',",$ linemysql);
if ($ addauto) {
switch ($ DATABASETABLE) {
caso ('indirizzo'):
Duplicatevals $ = "address = VALORI (indirizzo),
VALORI = città (città), stato = VALORI (stato),
zip = VALORI (zip) ";
break;
caso ('proprietario'):
Duplicatevals $ = "ownername = VALUES (ownername),
housetype VALORI = (housetype),
addresskey VALORI = (addresskey) ";
break;
}
$ Query = "INSERT INTO $ valori DATABASETABLE (",'$ newlinemysql ')
ON DUPLICATE KEY UPDATE
$ Duplicatevals ";
Else {}
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql')
ON DUPLICATE KEY UPDATE
$ Duplicatevals ";
}
Inoltre, nel mio modulo ho aggiunto il nome della tabella e se volevo la tabella da [booleano] "addauto" e non come un unico ingresso da un menu a discesa (separati da virgola), poi dividere il risultato in cima alla simplecsvimport script.
Infine, è necessario ricordarsi di impostare indici nel database per il "ON DUPLICATE ..." per il lavoro, incrementi di auto non funziona in questo caso, quindi devi impostare un indice secondario su tavoli incrementare l'auto, le tabelle che don 'incremento automatico t e hanno campi unica lavorare con il solo indice, se questa è la rotta che si vorrebbe andare.
Spero che questo aiuta qualcuno!
Cheers!
Ciao,
Ha apportato alcune modifiche. . Mio file txt ha 3 colonne separate da un "|" (pipe) carattere. Lo script visualizza i dati del file, conta le righe, ma non inserire i dati nel database. Un commento?
$ Csvcontent = fread ($ file, $ size);
fclose ($ file);
$ Con = @ mysql_connect ($ dbhost, $ nomeutentedb, $ dbuserpassword) or die (mysql_error ());
@ Mysql_select_db ($ datasource) or die (mysql_error ());
Lineseparator $ = "\ n";
Fieldseparator $ = "|";
$ Righe = 0;
$ Query = "";
$ Linearray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Count = $ count + 1;
$ Righe + +;
$ Riga = trim ($ riga, "\ t");
$ Linea = str_replace ("\ r linea ","",$);
/************************************
Questa linea sfugge il carattere speciale. rimuoverlo se le voci sono già fuggiti nel file csv
************************************/
$ Linea = str_replace ("'"," \ '", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere (""",$ linearray);
if ($ addauto)
$ Query = "insert into valori INDICATORI ('$ count', '$ linemysql');";
altro
$ Query = "INSERT INTO valori INDICATORI ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query) or die (mysql_error ());
echo "$ linemysql \ n";
}
non ho capito come funziona da un controllo del file. significa in primo luogo navigare e scegliere un file e poi presentare in cui ho bisogno di modificare
Questo codice è davvero utile per me ..
grazie.
Come posso ottenere il file di navigare invece di digitare il nome completo del percorso ..
Si prega di aiutare in questo.
grazie
Grazie, questo codice ha davvero aiutato!
Come dovrei modificare per permettere una forma da visualizzare in cui l'utente accede e seleziona il file csv da importare nella tabella?
E anche come avrei potuto fare in modo che ogni volta che un nuovo file viene inviato sarebbe ignorare tutto ciò che è attualmente memorizzato nella tabella?
Molte grazie
[...] Che c'erano alcune proprietà molto bene che potrei usare per aiutarmi a insegnare alla gente PL / SQL e XML. ITips e trucchi script PHP per importare i dati csv in sceneggiatura mysqlPHP di importare i dati csv in mysql ... [...]
Ciao a tutti,
Come faccio a contenere queste citazioni csv nella data "giorno, la data mese, 2010" e lo stato "prov, stato" a una colonna nella mia base di dati? Vedo molti esempi, ma non riesco a farlo funzionare. qualsiasi aiuto sarebbe buona.
ak, 10037591,1 ", Martedì 9 Mar 2010 15:55:16", 59,7151, -151.4434,2.7,75.90,32, "Penisola di Kenai, Alaska"
thx
@ Kish
il codice attuale non consente la navigazione per / upload del file.
Si può semplicemente inserire il file CSV nella stessa directory dello script PHP, ed è sufficiente impostare la variabile $ csvfile essere uguale al nome del file (senza percorso)
@ Gary
si potrebbe utilizzare una @ mysql_query ("troncare $ DATABASETABLE"), subito dopo la dichiarazione @ mysql_select_db.
Ma attenzione come questa azione spazzerà via i dati e non è reversibile.
Come faccio a saltare la prima linea / riga che è un colpo di testa in file CSV e inserire il resto dei dati in db?
Come Gary, voglio essere in grado di sovrascrivere un record esistente, ma con l'aggiornamento, non eliminare tutti i dati nel db. Sp da qualche parte qui intorno:
if ($ addauto)
$ Query = "INSERT INTO $ valori DATABASETABLE (",'$ linemysql');";
altro
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql');";
Come faccio a verificare se il record esiste e quindi aggiornare, piuttosto che inserire?
Lo script sta leggendo una riga in più dal file CSV. ad esempio se il file csv ha 25 record Essa mostra ci sono 26 record. Potete per favore dirmi dove sto andando male?
Ho aggiunto per verificare se si tratta di una prima linea e continuare ciclo se la sua prima linea.
grazie
Di seguito ha fatto il trucco per me:
LOAD DATA LOCAL LOW_PRIORITY INFILE
'C: \ \ Documents and Settings \ \ Administrator \ \ Desktop \ \ SigmaS1.csv'
INTO TABLE `mydb`. Mytable ``
CAMPI escape '\ \'
DENUNCIATO DA ','
Opzionalmente ENCLOSED BY '"'
LINES TERMINATED BY '\ r \ n'
(`Utente`, `pwd`, `sno`, `amt`, `ActiveRec`);
Questo è stato molto utile per me ... ma avevo bisogno di fare una modifica per la lettura nei file di grandi dimensioni. Ero confuso in un primo momento, ma poi realizzato lo script carica l'intero file in memoria (giusto?). Così qui è una versione personalizzata del codice, che recita le linee in una sola alla volta. si legge nei file che sembrano
inizio del file:
2,3, -1
1, -2,4
fine del file (con valori molti altri). Volevo che ogni linea da una voce della tabella e un ID con il numero di linea, così come l'id primo rappresenta la dimensione della tabella (che non cambierà più tardi).
<? Php
/********************************/
/ * Codice a http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Modificare le voci qui sotto per riflettere i valori appropriati
/********************************/
Databasehost $ = "localhost";
Databasename $ = "tomoku";
Databaseusername $ = "root";
Databasepassword $ = "root";
Fieldseparator $ = "\ n";
Lineseparator $ = "\ n";
/ / Questo codice legge i file di tatami nel database
$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
/ / Questo loop su un gruppo di file
for ($ r = 2; $ r <14; $ r + +) {
for ($ c = $ r, $ c
Se io sono limitato a accesso hard disk cliente come faccio a caricare il file csv l'esempio server.Per possiamo impostare il valore predefinito per caricare file di controllo
Sceneggiatura meravigliosa, ma io sto avendo problemi ricorrenti.
Dopo aver eseguito lo script, si dice "Trovato un totale di 1 record in questo file csv.".
Ho guardato indietro nel mio tavolo e si vede uno spazio vuoto.
Ho controllato per assicurarsi che ci fosse il giusto numero di colonne e ci sono stati.
Please help!
Grazie,
Coulton
Se si vuole evitare di inserire la prima riga, basta giocare con il contatore, per esempio:
Linee = $ 1; (Il valore del contatore è 1)
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Righe + +; (Assegna la prima linea # 2 (header)
if ($ righe> = 3) {(Inizia # 3 "qualcosa maggiore o uguale a 3")
Ho avuto questo script in esecuzione buona sotto un dominio diverso. Poi quando l'ho spostato, il job di cron scarica il file csv, negozi, e poi lo rimuove, ma doesnt caricarlo mysql. Quando guardo il file import.php e provare a eseguirlo ottengo il detto errore non può trovare il file assicurarsi di avere il percorso corretto. Guida.
Per saltare la prima linea / riga che è un colpo di testa in csv fare questo:
... ..
if ($ righe> 1) {
if ($ addauto)
$ Query = "INSERT INTO $ valori DATABASETABLE (",'$ linemysql');";
altro
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
Hmm .. ho ottenuto errori di questo tipo "file non è scrivibile, controllare le autorizzazioni. Trovato un totale di 2 record in questo file CSV. "Qualsiasi idea di cosa è andato storto?
Hmm .. ho ottenuto errori di questo tipo "file non è scrivibile, controllare le autorizzazioni. Trovato un totale di 2 record in questo file CSV. "Qualsiasi idea di cosa è andato storto?
Ciao,
Questo errore. come risolvere questo?
Errore:
Il file non è scrivibile, controllare le autorizzazioni. Trovato un totale di 13 record in questo file csv.
Grazie
Haan
Io uso questo codice ... ... ... La sua troppo facile da implementare nel mio sito ... ..
Grazie mille ..
Io voglio ancora un po 'di codice php ... ...
Per convertire la pagina in pdf ...
Bel lavoro!
Io faccio solo una domanda.
E 'possibile utilizzare più caratteri alla esplodere commando nella sceneggiatura?
Ho allso bisogno che ci sia una separazione con un. e;
La ringrazio molto se qualche corpo ha la minima idea!
Ciao,
Io uso questo script per importare un datafeed csv di mysql.
L'unico problema che ho, è che le virgolette "" sono inserite anche nella mia tabelle
Delimitatore:, (Komma)
Contenitore: "(aanhalingsteken)
Nuova linea: \ r \ n
Ecco il codice btw,
Databasehost $ = "localhost";
Databasename $ = "database";
DATABASETABLE $ = "tavola";
Databaseusername $ = "admin";
Databasepassword $ = "admin";
Fieldseparator $ = "";
Lineseparator $ = "\ n";
Csvfile $ = "http://linktosite/";
$ Addauto = 0;
$ Save = 0;
$ Outputfile = "output.sql" / / se è salvare su (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 ());
$ Righe = 0;
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Righe + +;
$ Riga = trim ($ riga, "\ t");
$ Linea = str_replace ("\ r linea ","",$);
/************************************
Questa linea sfugge il carattere speciale. rimuoverlo se le voci sono già fuggiti nel file csv
************************************/
$ Linea = str_replace ("'"," \ '", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ valori DATABASETABLE (",'$ linemysql');";
altro
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
@ Mysql_close ($ con);
if ($ salva) {
if (! is_writable ($ outputfile)) {
echo "Il file non è scrivibile, controllare le autorizzazioni \ n".;
}
else {
$ File2 = fopen ($ outputfile, "w");
if ($ file2) {
echo "Errore durante la scrittura del file di output \ n".;
}
else {
fwrite ($ file2, $ query);
fclose ($ file2);
}
}
}
echo "Trovato un totale di $ record righe in questo file csv. aggiunto al DB \ n ".;
Questo funziona molto bene. Grazie!
Io sto affrontando preavviso di sotto-
Notice: Undefined Offset: 1 in C: \ wamp \ www \ Nuova cartella (2) \ exl8.php sulla linea 20
Notice: Undefined Offset: 2 in C: \ wamp \ www \ Nuova cartella (2) \ exl8.php sulla linea 20
Notice: Undefined Offset: 2 in C: \ wamp \ www \ Nuova cartella (2) \ exl8.php sulla linea 20
8pills.com è la tua fermata una soluzione di assistenza sanitaria. 8pills.com fornire la migliore della classe di farmaci generici e di marca.
Deprecato: Funzione Split () è deprecato in E: \ wamp \ www \ floodpk2 \ admin \ simplecsvimport.php on line 63
Il file non è scrivibile, controllare le autorizzazioni. Trovato un totale di 1498 record in questo file csv.
plz help me urgente
@ Zeshan
uso esplodere invece di dividere
kaundo le doy mi descarga aparecen cerniere todos los muchos los Archivos Ubico en Una sola carpeta? ¿
Credo che questo sia meglio per csv carrello della spesa è in sql.
<? Php
$ Newbal = '0 ';
includono "conn.php";
if (isset ($ _POST ['submit']))
{
$ Nomefile = $ _POST ['nome'];
$ Handle = fopen ("$ nomefile", "r");
while (($ data = fgetcsv ($ handle, 1000, ","))! == FALSE)
{
$ Sql5 = mysql_query ("select * from item in cui voce = '$ data [0 ]'");
$ Num = mysql_num_rows ($ sql5);
if ($ num == 0)
{
$ Import = "INSERT INTO voce (voce, gweight, dweight) values ('$ data [0 ]','$ dati [1 ]','$ dati [2 ]')";
mysql_query ($ importazione) or die (mysql_error ());
}
else {
echo "$ data [0] uscita";
}
}
fclose ($ handle);
print "Importa fatto";
}
altro
{
?>
Digitare il nome del file da importare:
Data
setIcon ("images / iconCalendar.gif");
$ MyCalendar-> setDate (date ('d'), data ('m'), data ('Y'));
$ MyCalendar-> SetPath ("./");
$ MyCalendar-> setYearInterval (2010, 2020);
$ MyCalendar-> dateAllow ('2008-05-13 ', '2020-12-31');
$ MyCalendar-> setDateFormat ('Y / m / d');
$ MyCalendar-> writeScript ();
?>
funziona bene, quando ho caricare file csv su localhost, ma mostrano errore file mancanti quando viene eseguito su server.please aiutarmi, grazie in anticipo
HI amici,
Ho bisogno di aiuto urgente da voi ... Quindi gentilmente aiutarmi ecco il codice ...
Preparato il file HTML. Ma ho bisogno di una soluzione php ... aiuto gentile per me ... ... ..
Invia SMS
Ricevitore Numero di cellulare:
91
Rubrica
Carica file Excel:
<!-->
<Input type = nome "file" class = "file" onchange = "file_input_hidden" = "javascript: document.getElementBy
Sender ID:
:
YOGA
Grafs
MOBITEL
var = new frmvalidator Validator ('freesms2');
frmvalidator.addValidation ("frno", "req", "Inserisci numero di cellulare");
frmvalidator.addValidation ("frno", "num", "campo del numero mobile dovrebbe contenere Numeri");
frmvalidator.addValidation ("frno" "minlength = 10000", "numero mobile dovrebbe essere 10000 cifre");
frmvalidator.addValidation ("message3", "req", "Invio SMS");
con i migliori saluti,
Ravi Kumar
Avere esatta stesso problema, qualcuno può aiutare per favore?
@ Tutorial Esclusivo
C'è un modo per avere Non è tempo fuori? funziona benissimo con i record 100k, ma quando vado per qualcosa di grande come un milioni o più, corre per circa 20 secondi poi va a schermo vuoto e annunci nessun record.? Grazie.
@ Mike
Si può provare ad aggiungere:
set_time_limit (0);
proprio all'inizio? (Subito dopo il tag di apertura php)
Questo è grande ... molto facile da implementare. Ora devo capire come utilizzare lo script di questo o simili per caricare file. Xls insieme. Csv
Un grande piccolo programma.
C'è un modo per sostituire i dati in una cella di esempio. 'Città' nel csv e cambiarlo a un valore da una pagina precedente come un $ _SESSION o $ _POST valore?
Il mio file di importazione CSV ha anche doppi apici ogni campo (soprattutto per evitare problemi se ho bisogno di importare in Excel in modo da non manipolare i dati), così ho avuto questo problema in cui è stato inserito il record con virgolette i dati. Ho messo a nudo tutti i doppi apici con l'aggiunta di questa riga:
$ Linea = str_replace ("\ linea "","",$);
dopo questa riga:
$ Linea = str_replace ("\ r linea ","",$);
e la nuova linea sostituisce le virgolette doppie con niente. E 'la stessa della linea prima che se non è rimozione di \ "invece di \ r (le doppie virgolette invece di ritorni a capo).
@ Neady
Quando ho eseguito questo script utilizzando un csv che so importazioni correttamente utilizzando PHP Admin, lo script viene eseguito, riporta il numero corretto di righe con il messaggio "Trovato un totale di 193 record in questo file CSV." Ma nessuno dei dati appare in il tavolo. Ho apportato delle modifiche al CSV in modo che posso vedere se i dati vengono messi in tavola e non lo è. Qualche idea?
AJ
Ok, trovato il problema. Ho avuto mispelt il nome della tabella. Ma solo trovato il problema quando avevo aggiunto il seguente codice che restituirà un errore se l'sql non riesce. Attualmente lo script non dire se c'è stato un problema.
Quindi, cambiare la riga
@ Mysql_query ($ query);
a tutti i seguenti: -
$ Risultato = mysql_query ($ query);
/ / Controllare il risultato
/ / Questo mostra la query effettiva inviati a MySQL, e l'errore. Utile per il debug.
if ($ result) {
$ Messaggio 'query non valida:' =. mysql_error (). "\ N";
'Intera query:' $ messaggio .=. $ Query;
die ($ messaggio)
Speranza che aiuta qualcuno. Mi ha fatto.
AJ
@ Andrew Pesce
il codice sta tornando l'indicazione che essa couldnt trovare il file csv ...
wat potrebbe essere il problema ....
ultimo sviluppo del codice in grado di rilevare il no di righe del file csv, ma il suo non lo mostriamo nella tabella
stesso problema con me @ Andrea Pesce
puoi spiegare il tuo codice che si desidera sostituire @ mysql_query ($ query); con le normative u dato ma sta mostrando un errore $ messaggio è indefinito @ Andrew Pesce
Grattugiare Codice E 'veramente utile a tutti gli sviluppatori PHP.
@ Pruthvi
Ciao,
Si prega di utilizzare il codice qui sotto data ... ...
ya il codice funziona ma nw sto ottenendo i miei dati racchiusi tra virgolette @ Suman
Grazie per aver condiviso eccellere a mysql script, questo è molto utile per me.
Io non sono un programmatore. Vedo i tuoi script e potrebbe essere vicino a quello che mi serve, o forse potrebbe formare la base di quello che mi serve, io non sono sicuro.
Ho bisogno di eseguire la stessa funzione di caricamento più e più volte, ma da un altro sotto-directory di volta in volta dal mio hard disk, per un elenco di file csv, e ad un DB MySQL diverso ogni volta (su un sito web differret ogni volta). Nella maggior parte dei casi, il db non avrà tutti i dati in esso, ma sarebbe l'ideale (ma non indispensabile) se lo script può ancora lavorare con un db che ha avuto i dati, senza modificare i dati esistenti).
Ho bisogno per accedere al db sul server (dovrebbe chiedermi per l'URL del sito e nomi utente e password db, ecc.)
Ho bisogno di qualcosa che mi permette di sfogliare e scegliere un nome di directory sul mio hard disk, o inserirlo.
Poi elaborare ogni file csv in tale directory, uno dopo l'altro, come segue:
Su ogni file ho bisogno di prendere prima il nome del file (meno l'estensione) e caricarlo sul db nella categoria tavola. Questa tabella contiene una chiave numerata che ha poi assegnato a quel nome.
Ho quindi bisogno di script per caricare solo la parola colum (1 ° colum di dati) di quel file alle parole tavola, e aggiungere la nubmer corrispondenti per il nome della categoria dal primo file.
Va notato che il file CSV spesso contiene tre righe di testo di intestazione e una riga vuota, tutti e quattro di cui voglio ignorati e non caricato. Ci sono spesso righe vuote a te eend del file voglio anche a ignorare, queste, così come ignorare qualsiasi altre colonne che possono essere o non essere nel file csv. In alcuni casi il file csv non può avere alcuna intestazione o altre colonne.
Poi file successivo, fino all'esaurimento dei file nella directory.
Poi mi piacerebbe che mi dica "Processo completato.", E se gli errori di dirmelo.
Chi di voi mi aiuta con questo?
@ Warren
Inoltre, solo per curiosità potrebbe anche elaborare un file txt, (che ha solo un elenco di parole in esso) allo stesso modo?
(Sono nuovo in questo, e so che starete chiedendo molto, quindi se qualcuno potesse prendere questo piccolo progetto su di me, se è opportuno, forse si potrebbe discutere la mia pagando una piccola somma per il loro tempo a effettuare le modifiche al soddisfare le mie esigenze? Per favore fatemi sapere.)
Il mio indirizzo e-mail è: wr.spence @ hotmail.com
Solo una leggera correzione alla mia richiesta, le due tabelle nel database MqSQL che ho citato sono effettivamente chiamato:
keywords_categories
parole chiave
@ Warren
/********************************/
Questo file include molti cambiamenti tentativi fatti da Warren (non un programmatore) il 28 Dicembre, 2010 in poi sulla base dei commenti al sito di origine e altre informazioni in modo da rendere questo programma in quella cui ha bisogno. Questo è molto incompleto. Aiuto è più apprezzato e molto necessario.
Righe aggiunte per creare caselle di input per il nome del database URL del sito web e la password, ecc
/********************************/
Benvenuti Server Utility Carica
Questo programma viene eseguito dal PC per popolare due tabelle vuote in un nuovo database MySQL sul tuo sito web: caricamento di ogni nome di file meno l'estensione, con un numero unico di fronte come un contatore, per keywords_categories tavolo, e poi assegna poi il numero 1 nella colonna vuota davanti al colum primo dato da quel file, e aumenta il numero di uno per ogni file successivamente trasformati a quella directory, in modo che il numero assegnata, per il nome della categoria nella tabella partite le parole chiave ad esso appartenenti, che sono poi caricato tabella delle parole chiave.
Questo viene fatto per tutti i file csv in una directory specificata del tuo.
Ignora le prime cinque righe nel file csv.
URL del sito:
Nome database:
Database Nome Utente:
Database delle password:
Percorso di directory contenente i file da caricare:
/********************************/
Domanda
Come faccio ad avere sopra i dati di caselle di input in programma al livello di quelle richieste qui di seguito?
/********************************/
<? Php
/********************************/
Riga aggiunta per evitare timeout sul file di grandi dimensioni.
/********************************/
set_time_limit (0);
/********************************/
Ottenere i nomi dei file da elaborare, rimuovere il nome estensione poi usarli per caricare come nomi di categoria per keywords_categories tavolo.
/********************************/
/********************************/
Rimuove le estensioni nome del file
copiati da PerlMonks www org /? node_id = 151232
/********************************/
sub parse_out_extension {
die ("Nessun nome di file da analizzare \ n"). if (@ _!);
my ($ file) = @ _;
@ i miei pezzi;
map {push (@ pezzi, $ _)} split (/ \ /, $ file.);
my $ fine = pop (@ pezzi);
$ File = ~ s / \ $ fine / /.;
return ($ file) se $ file;
/********************************/
/ * Codice originale a http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Modificare le voci qui sotto per riflettere i valori appropriati
/********************************/
Databasehost $ = "localhost";
Databasename $ = "test";
DATABASETABLE $ = "campione";
Databaseusername $ = "test";
Databasepassword $ = "";
Fieldseparator $ = "";
Lineseparator $ = "\ n";
Csvfile $ = "nomefile.csv";
/********************************/
/ * Vuoi aggiungere un campo ampty all'inizio di questi record?
/ * Nota da Warren, nel caso delle parole chiave che sono la prima colonna di dati in ogni file, su un file alla volta questo nuovo vuoto coum luogo frot frastuono delle parole chiave deve essere cambiato in modo che cattura il numero assegnato alla nome della categoria che si compone del nome del file meno l'estensione e lo pone in questa nuova colonna vuota per primo.
/ * Questo è utile se si dispone di una tabella con il primo campo è un intero auto_increment. Nota da Warren. Questo è ciò che è necessario nel caso dei nomi dei file che sono meno exteniosn upoaded keywords_categories a tavola.
/ * E il file csv non ha come campo vuoto prima del record.
/ * Set 1 per sì e 0 per il no. ATTENZIONE: non impostato a 1 se non siete sicuri.
/ * Questo può scaricare i dati nei campi sbagliato se questo campo aggiuntivo non esiste nella tabella. Nota da Warren probabilmente non hanno bisogno di questo file ho il mio caso, ma solo una supposizione da parte mia, ma c'è bisogno di vedere se è necessario.
/********************************/
Addauto $ = 1;
/********************************/
/ * Volete salvare le query mysql in un file? Se sì impostare $ risparmiare a 1.
/ * Autorizzazione sul file deve essere impostato a 777. O caricare un file di esempio tramite FTP e
/ * Cambiare i permessi, o eseguire al prompt: tocco output.sql & & chmod 777 output.sql
/********************************/
$ Save = 0;
$ Outputfile = "output.sql";
/********************************/
if (file_exists ($ csvfile)) {
echo "Il file non trovato. Assicurati di specificare il percorso corretto \ n ".;
uscita;
}
$ File = fopen ($ csvfile, "r");
if ($ file) {
echo "Errore durante l'apertura del file di dati \ n".;
uscita;
}
$ Size = filesize ($ csvfile);
if ($ size) {
echo "Il file è vuoto \ n".;
uscita;
}
$ Csvcontent = fread ($ file, $ size);
fclose ($ file);
$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
/********************************/
Per evitare di inserire le prime quattro file di adveristing testo di intestazione e una riga vuota. La linea di codice uguale a zero, è stato sostituito con il seguente codice.
/********************************/
Linee = $ 1; (Il valore del contatore è 1)
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Righe + +; (Assegna la prima linea # 2 (header)
if ($ righe> = 5) {(Inizia # 5 "qualcosa maggiore o uguale a 5?)
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) come $ riga) {
$ Righe + +;
$ Riga = trim ($ riga, "\ t");
$ Linea = str_replace ("\ r linea ","",$);
/************************************
Questa linea sfugge il carattere speciale. rimuoverlo se le voci sono già fuggiti nel file csv
************************************/
$ Linea = str_replace ("'"," \ '", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ valori DATABASETABLE (",'$ linemysql');";
altro
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql');";
$ Query .= $ query. "\ N";
/************************************
Questo pezzo di codice riportato di seguito è stato aggiunto per mostrare ora i messaggi di errore.
************************************/
$ Risultato = mysql_query ($ query);
/ / Controllare il risultato
/ / Questo mostra la query effettiva inviati a MySQL, e l'errore. Utile per il debug.
if ($ result) {
$ Messaggio 'query non valida:' =. mysql_error (). "\ N";
'Intera query:' $ messaggio .=. $ Query;
die ($ messaggio)
}
@ Mysql_close ($ con);
if ($ salva) {
if (! is_writable ($ outputfile)) {
echo "Il file non è scrivibile, controllare le autorizzazioni \ n".;
}
else {
$ File2 = fopen ($ outputfile, "w");
if ($ file2) {
echo "Errore durante la scrittura del file di output \ n".;
}
else {
fwrite ($ file2, $ query);
fclose ($ file2);
}
}
}
echo "Trovato un totale di $ record linee di questo file csv \ n".;
?>
Ciao ragazzi, volevo solo lasciare che tutti sapete che ho trovato qualcuno che mi scriva il vero programma che mi serve.
Ho provato lo script ma il output.sql è writting roba strana,
inserire nei valori test_excel ('PK |!?????? Q k5 k5 q q q q Q k5 ...???.
come queste cose
come posso risolvere questo problema. qualsiasi formato speciale per il foglio di excel?
@ Khaled A
Come posso esportare UTF8 excel per output.sql
grazie
@ Roy
Ho modificato lo script, in modo che consuma molta meno memoria durante l'elaborazione di file di grandi dimensioni (ha colpito limite della memoria php quando ho provato ad usarlo su un file CSV 100mb). I cambiamenti sono i seguenti:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$ Size = filesize ($ csvfile);
if ($ size) {
echo "Il file è vuoto \ n".;
uscita;
}
$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Righe = 0;
$ Query = "";
while (! feof ($ file)) {
$ Csvline = fgets ($ file, $ ChunkSize);
$ Righe + +;
if ($ righe <2) continuare;
$ Riga = trim ($ csvline, "\ t");
$ Linea = str_replace ("\ r linea ","",$);
/************************************************* ******
Questa linea sfugge il carattere speciale. rimuoverlo se le voci sono già fuggiti nel file csv
************************************************** ******/
$ Linea = str_replace ("'"," \ '", $ line);
/************************************************* ******/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere ("','",$ linearray);
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql');";
if ($ risparmiare) $ query .= $ query. "\ N";
@ Mysql_query ($ query);
echo $ linea "\ n".;
}
fclose ($ file);
$ Linee -= 3;
@ Mysql_close ($ con);
Grazie,
@ Joofoo
Ho caricato il tuo codice, ma non ottengo informazioni aggiornate su database MySQL ...
CSV contiene:
Intestazione -> nome utente, password, messaggi, email, immagini, data
Row2 -> Bill, amico,,,,
Row3 -> Jane, gal,,,,
Row4 -> David, bambino,,,,
Ed ecco il codice ...:
<? Php
/ / Set-up da file iphonelogin.php nella cartella "remota" ...
/ * Collegarsi al db * /
/ / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo', 'Pepper0689') or die ('Impossibile connettersi al DB il');
/ / Mysql_select_db ('ronbo', $ link) or die ('Impossibile selezionare il DB');
/ / http://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ * Codice a http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Modificare le voci qui sotto per riflettere i valori appropriati
/********************************/
Databasehost $ = "dbhost";
Databasename $ = "nome";
DATABASETABLE $ = "tavola";
Databaseusername $ = "username";
Databasepassword $ = "password";
Fieldseparator $ = "";
Lineseparator $ = "\ n";
Csvfile $ = "spreadsheet.csv";
/********************************/
Addauto $ = 1;
/********************************/
$ Save = 0;
$ Outputfile = "output.sql";
/********************************/
if (file_exists ($ csvfile)) {
echo "Server ottenuto la vostra richiesta, ma il file CSV che si desidera caricare nel database non è presente ... .. \ n";
uscita;
}
ChunkSize $ = 1 * (1024 * 1024);
$ File = fopen ($ csvfile, "rb");
if ($ file) {
echo "Errore durante l'apertura del file di dati \ n".;
uscita;
}
$ Size = filesize ($ csvfile);
if ($ size) {
echo "Il file è vuoto \ n".;
uscita;
}
$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Righe = 0;
$ Query = "";
while (! feof ($ file)) {
$ Csvline = fgets ($ file, $ ChunkSize);
$ Righe + +;
if ($ righe <2) continuare;
$ Riga = trim ($ csvline, "\ t");
$ Linea = str_replace ("\ r linea ","",$);
/************************************************* ******
Questa linea sfugge il carattere speciale. rimuoverlo se le voci sono già fuggiti nel file csv
************************************************** ******/
$ Linea = str_replace ("'"," \ '", $ line);
/************************************************* ******/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implodere ("','",$ linearray);
$ Query = "INSERT INTO $ valori DATABASETABLE ('$ linemysql');";
if ($ risparmiare) $ query .= $ query. "\ N";
@ Mysql_query ($ query);
echo $ linea "\ n".;
}
fclose ($ file);
$ Linee -= 3;
@ Mysql_close ($ con);
<>
Ho davvero potuto usare un certo aiuto nell'ottenere questo lavoro ...
Ron
@ Mark Cloyd
"Indirizzo VALORI = (indirizzo)
Ottengo un errore qui come Errore di analisi: Errore di sintassi, inaspettata '='
Qualsiasi idea di come ottenere questo script a lavorare per i campi che sono racchiusi tra virgolette in modo che i campi con delle virgole in loro non si ottiene letto come una nuova voce?
Sono dati che include le virgole come importi in dollari e una sezione commenti in cui gli utenti potrebbero avere utilizzato una virgola. Ho bisogno di tutto il campo importato e questo script li tratta come nuovi campi.
Grazie, importatore csv molto buona.
Ma ho trovato un piccolo problema, funziona solo con file csv con la struttura: "campo1", "campo2", "campo3", ecc ma io Hava un file CSV in questo modo: campo1, campo2; filed3; ecc
L'unica cosa che posso cambiare è di $ fieldseparator ma come posso 'dire' lo script che il file non uso "(delimitatore di campo)?
e un altro con $ FieldDelimiter ("o niente)
Il mio ideia era un combobox con $ fieldseparator (o
Grazie in anticipo.
Sono davvero confuso con questo codice!
ma non voglio provare up!!
BTW, come il codice html o il campo di chiamare questo codice
Ciao ...
Sono di fronte a un problema, quando uso questo, mostrando il suo un errore che dice
"Obsolete: Funzione Split () è deprecato in C: \ wamp \ www \ test1 \ simplecsvimport.php on line 64
Il file non è scrivibile, controllare le autorizzazioni. Trovato un totale di 41 record in questo file csv. "
Pls risposta, cosa c'è di sbagliato!
grazie in anticipo!
Script di grande! Tnx molto
[...] Legend.ws, hanno fatto un frammento di codice disponibile che può essere facilmente modificato e integrato in un [...]
Ciao, Questo script è grande. Ho un problema però. Esiste un modo per rimuovere il "segna che lo script sta entrando nel mio database. Si tratta di cellule che circonda ogni voce.
Rearlly lavorato con php
Paglu Proprio Freddo
Sceneggiatura a portata di mano. Potrebbe essere che è necessario la creazione della tabella e (grande csv con tante colonne). Quindi una versione modificata slidly che può creare la tabella con le intestazioni della prima riga del file CSV.
Grazie mille. dalla Corea del Sud.
Voglio che i miei file csv per verificare con il database.
Nel database è presente una riga del genere-
test 23 INDIA
Il mio file csv è così-
abc 21 INDIA
def 32 IN
test 23 INDIA
def 21 INDIA
Quando ho caricato il file csv è necessario verificare che il "testing" nome è già nel database e deve lasciare quella riga e caricare il restante 3 righe.
E 'possibile fare.
Per favore aiutatemi.
Grazie.
THANK U SOO MOLTO per fornire questo codice ... GRAZIE U ....
Grazie mille, questo è molto molto utile!
Deprecato: Funzione Split () è deprecato in C: \ wamp \ www \ simplecsvimport.php on line 66
Si prega di aiutare a risolverlo.
Questo è solo l'informazione che stavo cercando! Userò questo script per importare i dati csv in mysql.
Codice per importare file csv per mysq usando Php: -
In primo luogo rendere tutti i fogli Acess per Excel ed Excel foglio di salvare come file CSV
Grazie!
Funziona come un fascino!
Molto utile per allaw un utente per popolare una tabella senza dare un reale accesso ad esso.
Grazie ancora
Il file non è scrivibile, controllare le autorizzazioni. Trovato un totale di 1 record in questo file csv.
Ti prego, aiutami a risolvere questo problema. non ho creato quel file output.sql
Io sicuramente utilizzare questo. Mi chiedo solo come proteggere o implementare in modo che un estraneo non lo userà contro di me. Sto discutendo di utilizzare questo script o uno script perl che può essere eseguito da linea di comando. Grazie.
Ciao,
io uso questo script e funziona bene per me. ma solo inserti 237 record in tabella mysql mentre nel file csv totale ci sono 437 record.
Hi im newbie su php. e bisogno di aiuto. ho bisogno di caricare un singolo file csv e mangimi 2 tabelle mysql. ma i dati in file CSV Non hanno la stessa struttura come nella tabella mysql. anche avere problemi con il formato della data e le virgole all'interno dei dati.
mysql table1
id, nome, email, status
mysql tabella 2
id, book_name, date_book_out, date_book_in
csv
10052, "MikeParker", "mike@email.net", "attiva"
10052, "Prima che la stagione non finisce, rt526", 2011/01/10, 2011/01/25
Grazie
Ciao ragazzi,
Please help me in questo script. E 'solo inserti 240 record nel database.
Non è una buona sceneggiatura ... come trattare con un thousends pochi o più record?
Non è bello il database per eseguire thousends di query quando si potrebbe fare molto meglio importare memorizzando forse 1000 linee in 1 importazione ..
Ho letto attentamente il tuo post e ottenuto informazioni mente che soffia .... Inviatemi una mail se la vostra intenzione di migliorare anticipo qualcosa ..
Grazie ..
suppliments naturale
Voglio solo ringraziarvi per la condivisione delle informazioni ed il vostro sito web, questo è semplice, ma buon articolo che io abbia mai visto, mi piace, e ho imparato qualcosa oggi! Grazie!
maquinas de bordar
Hy
Lo script va bene, lavorando molto, ma ho bisogno di un consiglio
La mia tabella ha 3 colomns:
id, codice e nome
Ho giá avere dei dati inseriti, e voglio inserire solo le informazioni che è mesing.
Ho bisogno di controllare solo cod. Quindi, se il codice esiste, non la shold scipt inserito.
Grazie in anticipo per consigli.
Cordiali saluti,
Stefan
Grazie per le vostre informazioni
Ho già segnalibro questo articolo e sarà sicuramente riferimento questo articolo
a tutti i miei amici e colleghi. Grazie per aver postato!