ascolta, se hai tempo, puoi aiutarmi a risolvere il mio problema? vedi 3d..
![]()
ascolta, se hai tempo, puoi aiutarmi a risolvere il mio problema? vedi 3d..
![]()
"La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".
ma perchéquesto metodo mi funziona per tabelle semplicissime e per tabelle complesse no???adesso sclero!
Ho provato con una tabella di 2 sole colonne e circa un centinaio di record e funziona a meraviglia.
Ho provato con altre tabelle di quell'ordine e tutto funziona!
Ho provato con la tabella che mi servirebbe [17 colonne e 1444 record] e va in palla con l'inserimento, mi inserisce 30 record di cui mette SOLO l'id e arrivato a 30 riparte da capo e naturalmente essendo l'id la chiave mi resitituisce l'errore Duplicate entry mentre le altre colonne le lascia completamente vuote!
Magari avrò sbagliato qualcosa io, ma non dopo una mattinata che ci perdo!Il csv lo creo da phpMyAdmin sempre nello stesso modo settando il ; come separatore e la creazione dei campi è talmente automatica che anche volendo non la posso sbagliare, e poi l'ho controllata 1700volte!!!![]()
Ha un limite quello script?adesso vi posto il mio codice...
e come detto prima mi restituisce quel bellissimo errore...codice:<? include 'connect.inc.php'; $nome_file ="ricette_new.csv"; $separatore=";"; if (file_exists($nome_file)) $fp = fopen($nome_file, "r"); else{ echo "File introvabile "; exit(); } while (!feof($fp)){ $linea = fgets($fp,4096); $liste = explode($separatore,$linea); /* vado a specificare l'array in relazione ai campi che intendo importare */ $ricid = addslashes(stripslashes($liste[0])); $titolo = addslashes(stripslashes($liste[1])); $ingredienti = addslashes(stripslashes($liste[2])); $preparazione = addslashes(stripslashes($liste[3])); $vini = addslashes(stripslashes($liste[4])); $periodo = addslashes(stripslashes($liste[5])); $categoria = addslashes(stripslashes($liste[6])); $note = addslashes(stripslashes($liste[7])); $genere_cucina = addslashes(stripslashes($liste[8])); $regione = addslashes(stripslashes($liste[9])); $attivo = addslashes(stripslashes($liste[10])); $data = addslashes(stripslashes($liste[11])); $stagione = addslashes(stripslashes($liste[12])); $tempo = addslashes(stripslashes($liste[13])); $costo = addslashes(stripslashes($liste[14])); $dosi = addslashes(stripslashes($liste[15])); $difficolta = addslashes(stripslashes($liste[16])); // A questo punto l'inserimento $query="insert into ricette (ricid, titolo, ingredienti, preparazione, vini, periodo, categoria, note, genere_cucina, regione, attivo, data, stagione, tempo, costo, dosi, difficolta )"; $query.="values ('$ricid', '$titolo', '$ingredienti', '$preparazione', '$vini', '$periodo', '$categoria', '$note', '$genere_cucina', '$regione', '$attivo', '$data', '$stagione', '$tempo', '$costo', '$dosi', '$difficolta') "; $result=mysql_query($query) or die (mysql_error()); } ?>
mi sapete indicare dove sbaglio?io ormai anche se c'è un errore sono talmente fuso che non lo trovo!!
vi ringrazio!![]()
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone
Con phpMyAdmin puoi sia esportare file csv che importarli senza doverti creare da solo uno script.
ok...ad esportarli sono capace, è ad importarli che non vedo come poterlo fare, avevo anche chiesto ma nessuno ha più risposto...
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone
Per importare file csv su phpMyAdmin vai sulle proprietà della tabella che ti interessa e clicchi su "Inserisci un file di testo nella tabella" (phpMyAdmin 2.5.4). Poi segui le indicazioni.
Eventualmente prova da excel a salvarlo anche come file di testo e poi usa:Originariamente inviato da 13manuel84
ok...ad esportarli sono capace, è ad importarli che non vedo come poterlo fare, avevo anche chiesto ma nessuno ha più risposto...
LOAD DATA INFILE ....
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Duplicate entry...
di solito quell'errore si verifica quando hai impostato un id_autoincrement primary e cerchi di aggiungere + id con lo stesso valore.
Mi sta venendo un dubbio...ma non è che $ricid contiene l'id del record?
Se è così non ti serve averlo nel file csv.
Considera solo i rimanenti campi.
Se ricid è primary tiralo via dalla query di inserimento, e tira via anche $ricid.
Dovrebbe funzionare!
![]()
"La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".
mi sa che allora non lo posso fare, sul server che mi ospita ho la versione 2.2.5Originariamente inviato da Teuzzo
Per importare file csv su phpMyAdmin vai sulle proprietà della tabella che ti interessa e clicchi su "Inserisci un file di testo nella tabella" (phpMyAdmin 2.5.4). Poi segui le indicazioni.![]()
ho cercato su mysql.com come funziona LOAD DATA FILE, ma non c'ho capito niente, e ho trovato solo LOAD DATA INFILE, se non ti chiedo troppo me lo fai un esempio?Originariamente inviato da piero.mac
Eventualmente prova da excel a salvarlo anche come file di testo e poi usa:
LOAD DATA INFILE ....
![]()
si il significato lo conoscevo. Ho provato a fare come dici; adesso mi inserisce tutti i record, solo che al posto di arrivare a 1444 record va fino a 26785 ed inserisce completamente sballato, lascia vuoti determinati record, mette dati in celle che non c'entrano niente, etc...Originariamente inviato da Blue_savana
...
Se ricid è primary tiralo via dalla query di inserimento, e tira via anche $ricid.
Dovrebbe funzionare!
![]()
![]()
Grazie a tutti e tre!!![]()
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone
ci può essere un problema nella scelta del separatore.
Devi essere sicuro che il ; (se usi quello sia solo un separatore, altrimenti nell'importazione sballa tutto..
Il consiglio è quello di usare | come separatore..
"La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".
il comando e' LOAD DATA INFILE e non LOAD DATA FILE. Ovviamente questo carica le celle in modo ordinato, quindi con excel devi formare la stessa struttura del tuo db. Vuoto, se non hai dati per quella colonna.
Potresti anche scaricare tutto in una tabella temporanea e poi con INSERT ... SELECT trasferire i campi dove ti servono con la chiamata nominale dei vari campi.
la sintassi:
LOAD DATA INFILE 'path/to/file_name.txt'
INTO TABLE nome_tabella
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.