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.


Scaricare il file qui

135 Commenti

Jake 25 Febbraio, 2007 alle 06:31

Molto utile, grazie.

S. Martinez 22 Febbraio, 2007 alle 12:17

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.

Len Lulow 28 febbraio 2007 alle 20:11

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"; /*********** ************************************************** *******************************/ [...]

hfvd 24 Ottobre 2007 alle 12:44

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. [...]

»CSV importazione 7 giugno 2008 alle 10:29

[...] /******************************************** ************************************************/ / * 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"; /*********** ************************************************** *******************************/ [...]

dani 25 Agosto 2008 alle 08:06

Wow ... è fresco aveva idea dopo aver letto il tuo codice ... ringrazio molto

steve 31 Ago 2008 alle 07:04

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 ...?

Giuseppe 3 Settembre 2008 alle 12:39

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

ollyd 9 settembre, 2008 alle 06:35

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.

Rengaraj 12 settembre 2008 alle 12:11

Ricevo questo errore file non trovato. Assicurati di specificare il percorso corretto.

Rengaraj 12 settembre 2008 alle 12:16

Può uno veloce risposta ho un file csv a bbqrest.csv percorso corretto (root) ..

Steve 12 Settembre 2008 alle 12:19

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.

Robbie 24 Settembre 2008 alle 12:19

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.

Robbie 24 Settembre 2008 alle 14:27

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

Robbie 24 Settembre 2008 alle 14:27

)
/ / 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 + +;
}
}
}

Brad 26 Set 2008 alle 02:43

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?

ASCASC 27 settembre 2008 alle 05:04

brad, se l'avesse scaricato in precedenza che la scorsa settimana, sostituire il '<?' in alto con '<? php' (togliere spazio)

Roelof 30 settembre 2008 alle 08:06

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?

Phillip 1 ottobre 2008 alle 10:26

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?

admin 6 Ottobre, 2008 alle 00:27

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.

Fidel Bizzarri 10 Ottobre, 2008 alle 05:12

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);
}

Login 20 ottobre 2008 alle 18:10

Opera principale di Nizza ;-)

enim 23 Ottobre 2008 alle 04:16

non è stata inserita nella tabella di database in cui voglio che sia inserito ..: (

gene 29 ottobre, 2008 alle 09:28

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?

MarkFromHawaii 19 novembre 2008 alle 04:00

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.

admin 1 dicembre, 2008 alle 02:10

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.

Chris 18 dicembre 2008 alle 02:31

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

admin 18 Dicembre 2008 alle 05:35

Caro Chris,

si prega di sostituire:
@ Mysql_query ($ query);
con:
@ Mysql_query ($ query) or die (mysql_error ());

e fatemi sapere quale errore ti dà

Gary Pearman 23 Febbraio, 2009 alle 07:25

Per quanto riguarda il problema citazioni, si può semplicemente utilizzare questo:

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

Cheers,
Gaz.

Stanley Zdun 24 ago 2009 alle 18:19

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

admin 26 Agosto 2009 alle 03:20

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 :)

Claus 11 Settembre 2009 alle 12:59

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

Adrian 13 Settembre 2009 alle 19:03

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

Okoth 18 Settembre 2009 alle 08:16

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?

admin 3 Ottobre, 2009 alle 05:54

@ 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.

admin 3 Ottobre, 2009 alle 05:58

@ 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)

admin 3 Ottobre, 2009 alle 06:02

@ 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.

Andy Brotherton 4 ottobre, 2009 alle 02:14

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"

admin 5 ottobre 2009 alle 08:46

@ 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?

MAFF 7 OTTOBRE 2009 alle 07:24

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?

admin 8 ottobre, 2009 alle 16:48

il comando è: nometabella troncare.

è possibile inserire on line i seguenti 58:
@ Mysql_query ("troncare $ DATABASETABLE");

ma questo non è reversibile! quindi state attenti

Nathan 20 Ott 2009 alle 05:59

Ciao, mi dice che il conteggio dei record, ma non mettere i dati nel database

Spero che tu possa aiutare

Nathan

phpwebdesigner2010 8 dicembre 2009 alle 21:39

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

Segna Cloyd 3 gennaio, 2010 alle 19:33

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!

Segna Campo 11 Gennaio 2010 alle 00:10

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";
}

rajdeo 4 Febbraio 2010 alle 07:21

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

Kish 17 Febbraio, 2010 alle 02:31

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

Gary 2 Mar 2010 alle 11:26

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

data_type 5 marzo 2010 alle 12:03

[...] 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 ... [...]

Jeremie 9 marzo 2010 alle 12:39

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

admin 16 marzo 2010 alle 12:28

@ 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)

admin 16 marzo 2010 alle 12:30

@ 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.

pace 13 Aprile 2010 alle 10:52

Come faccio a saltare la prima linea / riga che è un colpo di testa in file CSV e inserire il resto dei dati in db?

Carl 18 Aprile 2010 alle 11:00

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?

pace apr 20, 2010 alle 11:22

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

Ap.Muthu 28 Aprile, 2010 alle 06:02

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`);

alejandro 11 maggio 2010 alle 04:03

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

Saman 3 Giugno 2010 alle 01:10

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

Coulton 5 giugno, 2010 alle 09:55

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

gio 5 Giugno 2010 alle 14:55

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")

newbie 14 giugno 2010 alle 09:41

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.

Polluce 24 giugno 2010 alle 10:28

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);
}

Darwin 23 luglio 2010 alle 01:21

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?

Darwin 23 luglio 2010 alle 01:23

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?

Haan 7 agosto 2010 alle 05:11

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

Vinita 17 Agosto 2010 alle 06:49

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 ...

Radikale 18 Agosto 2010 alle 06:35

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!

Roy 20 agosto, 2010 alle 12:00

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

Roy 20 agosto, 2010 alle 12:02

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 ".;

Matt 8 Set 2010 alle 23:18

Questo funziona molto bene. Grazie!

Oram 10 settembre 2010 alle 01:17

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

Online Pharmacy 11 Settembre 2010 alle 09:22

8pills.com è la tua fermata una soluzione di assistenza sanitaria. 8pills.com fornire la migliore della classe di farmaci generici e di marca.

zeshan 16 settembre 2010 alle 10:05

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

Bhanu 19 settembre 2010 alle 22:44

@ Zeshan

uso esplodere invece di dividere

susylu 21 settembre 2010 alle 02:54

kaundo le doy mi descarga aparecen cerniere todos los muchos los Archivos Ubico en Una sola carpeta? ¿

Formazione on line 29 settembre 2010 alle 10:26

Credo che questo sia meglio per csv carrello della spesa è in sql.

Rashmi 10 Ottobre 2010 alle 08:41

<? 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

Seelam Ravi Kumar 19 ottobre 2010 alle 17:26

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

neady 25 ottobre 2010 alle 06:21

Avere esatta stesso problema, qualcuno può aiutare per favore?

Roy :
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

mike 18 nov 2010 alle 21:48

@ 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.

admin 29 Nov, 2010 alle 04:57

@ Mike
Si può provare ad aggiungere:
set_time_limit (0);
proprio all'inizio? (Subito dopo il tag di apertura php)

Evan Islam 30 novembre 2010 alle 05:23

Questo è grande ... molto facile da implementare. Ora devo capire come utilizzare lo script di questo o simili per caricare file. Xls insieme. Csv

slug 1 DICEMBRE 2010 alle 05:29

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?

Craig 8 dicembre 2010 alle 01:20

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

Andrew Pesce 9 dicembre 2010 alle 04:26

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

Andrew Pesce 10 Dic 2010 alle 15:28

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

pruthvi 23 Dicembre 2010 alle 08:52

il codice sta tornando l'indicazione che essa couldnt trovare il file csv ...
wat potrebbe essere il problema ....

pruthvi 23 Dicembre 2010 alle 09:30

ultimo sviluppo del codice in grado di rilevare il no di righe del file csv, ma il suo non lo mostriamo nella tabella

pruthvi 23 Dicembre 2010 alle 09:31

stesso problema con me @ Andrea Pesce

pruthvi 23 Dicembre 2010 alle 09:48

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

Suman 23 Dicembre 2010 alle 14:12

Grattugiare Codice E 'veramente utile a tutti gli sviluppatori PHP.

Suman 23 Dicembre 2010 alle 14:16

@ Pruthvi

Ciao,

Si prega di utilizzare il codice qui sotto data ... ...

Suman 23 Dicembre 2010 alle 02:18

Suman :
@ Pruthvi
Ciao,
Si prega di utilizzare il codice qui sotto data ... ...

pruthvi 24 dicembre, 2010 alle 04:09

ya il codice funziona ma nw sto ottenendo i miei dati racchiusi tra virgolette @ Suman

Alfa 26 dicembre 2010 alle 06:32

Grazie per aver condiviso eccellere a mysql script, questo è molto utile per me.

Warren 28 dicembre 2010 alle 21:37

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 28 dicembre 2010 alle 22:10

@ 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

Warren 28 dicembre 2010 alle 10:30

Solo una leggera correzione alla mia richiesta, le due tabelle nel database MqSQL che ho citato sono effettivamente chiamato:

keywords_categories

parole chiave

Warren 29 Dicembre 2010 alle 01:31

@ 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".;

?>

Warren 30 Dicembre, 2010 alle 18:57

Ciao ragazzi, volevo solo lasciare che tutti sapete che ho trovato qualcuno che mi scriva il vero programma che mi serve.

Khaled A 11 gennaio 2011 alle 09:46

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 11 gennaio 2011 alle 10:35

@ Khaled A
Come posso esportare UTF8 excel per output.sql
grazie

joofoo 11 Gennaio, 2011 alle 11:16

@ 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,

ronbowalker 15 Gennaio, 2011 alle 05:54

@ 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

qwewe 23 gennaio 2011 alle 14:56

@ Mark Cloyd
"Indirizzo VALORI = (indirizzo)
Ottengo un errore qui come Errore di analisi: Errore di sintassi, inaspettata '='

Rusty 3 Febbraio, 2011 alle 14:56

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.

Jorge Dias 14 marzo, 2011 alle 07:01

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)?
Il mio ideia era un combobox con $ fieldseparator (o ;) e un altro con $ FieldDelimiter ("o niente)

Grazie in anticipo.

JustKid 7 aprile 2011 alle 10:25

Sono davvero confuso con questo codice!
ma non voglio provare up!!
BTW, come il codice html o il campo di chiamare questo codice

UMAir 2 Maggio 2011 alle 07:39

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!

Joln 11 maggio, 2011 alle 07:52

Script di grande! Tnx molto

[...] Legend.ws, hanno fatto un frammento di codice disponibile che può essere facilmente modificato e integrato in un [...]

Matt Fleming 15 Giugno 2011 alle 15:16

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.

Jhon 3 Luglio 2011 alle 10:14

Rearlly lavorato con php
Paglu Proprio Freddo

Bram 21 ago 2011 alle 07:05

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.

J-Hong 31 Agosto, 2011 alle 13:58

Grazie mille. dalla Corea del Sud.

Amit 5 settembre 2011 alle 10:11

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.

Sonia Jayaprakash 15 Settembre 2011 alle 10:23

THANK U SOO MOLTO per fornire questo codice ... GRAZIE U ....

Nick 15 Set 2011 alle 08:22

Grazie mille, questo è molto molto utile!

Arjun p Yadav 17 settembre 2011 alle 08:19

Deprecato: Funzione Split () è deprecato in C: \ wamp \ www \ simplecsvimport.php on line 66

Si prega di aiutare a risolverlo.

Dereva plantarea Trandafirilor Jenela 13 Ottobre, 2011 alle 08:12

Questo è solo l'informazione che stavo cercando! Userò questo script per importare i dati csv in mysql.

Manmohit Verma 15 Ottobre 2011 alle 06:27

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

Fernando Murrieta 15 ottobre 2011 alle 18:07

Grazie!

Funziona come un fascino!

Molto utile per allaw un utente per popolare una tabella senza dare un reale accesso ad esso.

Grazie ancora :)

raja 2 novembre 2011 alle 12:12

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

NetWeaver 7,3 3 novembre, 2011 alle 06:04

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.

Ankur 16 novembre 2011 alle 11:15

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.

Miguel 24 Novembre 2011 alle 03:57

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

Ankur 7 Dicembre 2011 alle 04:35

Ciao ragazzi,

Please help me in questo script. E 'solo inserti 240 record nel database.

Rolf 8 dicembre 2011 alle 17:05

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 ..

suppliments naturale 29 dic 2011 alle 08:19

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

maquinas de Coser 30 dicembre, 2011 alle 06:28

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

Stefan 30 dicembre 2011 alle 08:18

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

alen 1 gennaio 2012 alle 18:04

Grazie per le vostre informazioni

Schaumburg Personal Trainer 9 Gennaio 2012 alle 01:35

Ho già segnalibro questo articolo e sarà sicuramente riferimento questo articolo
a tutti i miei amici e colleghi. Grazie per aver postato!

Lascia un commento

Il tuo commento