Back to top

Autore Topic: Caricare Csv in database Mysql di Joomla  (Letto 12707 volte)

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Caricare Csv in database Mysql di Joomla
« il: 08 Mag 2010, 18:43:01 »
Salve
cerco da un po di giorni, 3, di creare uno script che inserisca i dati di un file Csv, residente nella root, in una tabella del database di joomla (tabella con i campi gia definiti).
Lo script in questione
<?php
$sql="LOAD DATA INFILE'/web/htdocs/www.pippo.it/home/prova.csv' INTO TABLE `Prova` FIELDS TERMINATED BY ','
 ";
?>


non ricevo errori ma non mi carica i valori nella tabella.
Potete darmi un aiuto?

Offline santograz

  • Abituale
  • ****
  • Post: 907
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #1 il: 08 Mag 2010, 19:20:17 »
Ciao,
probabilmente non è questo il problema, ma mi pare che la sintassi di questo comando preveda uno spazio dopo INFILE.
Un esperto mi ha detto:"Per avere un sito web sicuro, installalo su di un server locale, poi spegnilo e stacca i cavi". Mi hanno rubato il computer.

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #2 il: 09 Mag 2010, 11:26:19 »
Fatto ma non succede nulla. Ho effettuato anche il mysql_connect ma nulla. :-\

Offline santograz

  • Abituale
  • ****
  • Post: 907
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #3 il: 09 Mag 2010, 11:57:43 »
Sicuro del percorso? Prova ad usare il path di Joomla...
Un esperto mi ha detto:"Per avere un sito web sicuro, installalo su di un server locale, poi spegnilo e stacca i cavi". Mi hanno rubato il computer.

Offline kuvier00

  • Appassionato
  • ***
  • Post: 440
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #4 il: 09 Mag 2010, 12:34:04 »
Prova a caricare il CSV da phpMyAdmin

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #5 il: 09 Mag 2010, 13:45:58 »
non ricevo errori ma non mi carica i valori nella tabella.

se usi le classi di joomla per eseguire il sql, hai attivato il debug? (se no le exceptions sono intercettate: nessun errore visibile)

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #6 il: 09 Mag 2010, 18:27:51 »
Ho attivato il debug di sistema ma continua a non darmi messaggi di errore!?
Ciao

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #7 il: 09 Mag 2010, 18:56:57 »
prova a specificare anche le terminazioni di linea ed i caratteri di ENCLOSED. eventualmente prova il modificatore LOCAL.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #8 il: 09 Mag 2010, 21:46:27 »
Ci ho provato ma non funziona
$sql="LOAD DATA INFILE '/web/htdocs/www.pippo.it/home/prova.csv' INTO TABLE Prova FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY """" LINES TERMINATED BY '\n'
";
anzi ricevo il messaggio
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/htdocs/www.pippo.it/home/load.php on line 8

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #9 il: 09 Mag 2010, 22:01:49 »
 :D ma lo hai scritto in visual basic?

$sql="LOAD DATA INFILE '/web/htdocs/www.pippo.it/home/prova.csv' INTO TABLE Prova FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY \"\" LINES TERMINATED BY '\\n'";

oppure

$sql="LOAD DATA LOCAL INFILE '/web/htdocs/www.pippo.it/home/prova.csv' INTO TABLE Prova FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY \"\" LINES TERMINATED BY '\\n'";


ciao, marco.
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #10 il: 09 Mag 2010, 22:04:48 »
/web/htdocs/www.pippo.it/home/load.php on line 8

sicuro di essere all'interno di joomla? ovvero che il file sia processato da joomla, se no devi controllare tu il funzionamento della query, non serve il debug di joomla.

ciao,
marco
 
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #11 il: 10 Mag 2010, 09:59:28 »
Si sono all'interno di joomla, sia il file php che quello csv si trovano nella mia root.
Avevo pensato di fare un import da phpmyadmin e poi di incollare il codice php che viene prodotto cambiando solo il percorso del file:
<?php
$link = mysql_connect('***', '***', '***');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
$sql = "LOAD DATA LOCAL INFILE \'/web/htdocs/www.pippo.it/home/prova.csv' INTO TABLE `Prova` FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\'# 1 riga/e modificata.\n"
    . "";
?>
pensavo fosse una buona idea ma mi sbagliavo.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #12 il: 10 Mag 2010, 10:17:01 »
è una buona idea, ma due cose:

1. non sei all'interno di joomla: con tale locuzione si intende all'interno del framework, non solo della cartella.

2. manca il codice di selezione del db:
mysql_select_db('nomeDB');

3. manca il codice di esecuzione della query: mysql_query($sql) ;

mi sa che ti conviene rileggere un po' di documentazione  ;)

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #13 il: 10 Mag 2010, 19:31:44 »
Ho studiato un po e sono arrivato a questo
<?php

$link = mysql_connect('***', '***', '***');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}


echo 'Connected successfully';
mysql_select_db('***');
$file = "/web/htdocs/www.pippo.it/home/prova.csv";
$command = "(LOAD DATA INFILE ".$file."
INTO TABLE prova
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n')";
$result =  mysql_query($command) or die(  mysql_error() );
?>
ma evidentemente non ho studiato abbastanza infatti adesso ricevo:
Connected successfullyYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOAD DATA INFILE /web/htdocs/www.pippo.it/home/prova.csv INTO TABLE prova' at line 1
 :-[

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #14 il: 10 Mag 2010, 20:35:40 »
la parentesi è inutile, ma manca il delimitatore del testo per il nome file:

$command = "LOAD DATA INFILE '".$file."' INTO TABLE prova FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";

o, più leggibile:

$command = "LOAD DATA INFILE '{$file}' INTO TABLE prova FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #15 il: 10 Mag 2010, 21:33:24 »
Vedo la luce :)
ora però ho un problema, penso, di accessi
Access denied for user '***'@'%' (using password: YES)
 :o
forse devo modificare qualche permesso delle mie cartelle?!

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #16 il: 11 Mag 2010, 07:22:33 »
 >:( >:(
io strozzerei volentieri quelli che vanno in giro a dire, per partito preso e senza alcuna conoscenza sistemistica, che per far funzionare i programmi php bisogna cambiare i permessi alle cartelle: ecco i risultati.

@all
se non siete sistemisti evitate di dare consigli da sistemisti! grazie.

@maxtemp
no maxtemp, quello è un messaggio di mysql: significa che le credenziali che stai usando per collegarti al server non sono accettate, verifica i parametri in mysql_connect.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #17 il: 11 Mag 2010, 08:39:57 »
Scusa mmleoni ma nel mio script avevo anche il controllo di connessione. Comunque ho ricontrollato i dati di accesso ma sono esatti.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #18 il: 11 Mag 2010, 09:04:14 »
ricorda che selezioni il db dopo la connessione (e qui non effetti nessun controllo di errore), non basta che l'utente possa collegarsi al server è anche necessario che abbia i permessi sul db e sulla tabella sui quali intende operare, altrimenti avrai l'errore in questione.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #19 il: 11 Mag 2010, 12:46:52 »
Navigando su internet ho trovato altre persone con questo problema legato ad i database di una notissima società (non so se si possa fare il nome), e ad i permessi di amministratorte che non ho. Forse il LOAD DATA INFILE non è utilizzabile per il mio scopo.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #20 il: 11 Mag 2010, 13:00:27 »
se parli di mysql puoi farne il nome...

devi verificare che il db server si trovi sullo stesso server su cui si trova il programma, altrimenti devi usare

LOAD DATA LOCAL INFILE ...

btw: local puoi usarlo in ogni caso, ma in caso il file sia sul db server il processo è più  efficiente omettendolo.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline santograz

  • Abituale
  • ****
  • Post: 907
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #21 il: 11 Mag 2010, 16:39:27 »
Citazione
/web/htdocs/www.pippo.it/home/prova.csv

Scusa, sei su di un server locale? A me questo path sembra cortino...
Un esperto mi ha detto:"Per avere un sito web sicuro, installalo su di un server locale, poi spegnilo e stacca i cavi". Mi hanno rubato il computer.

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #22 il: 11 Mag 2010, 18:34:53 »
No, mi trovo nella root di un server Aru.. con s.o. Unix

Offline santograz

  • Abituale
  • ****
  • Post: 907
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #23 il: 11 Mag 2010, 19:33:07 »
Ho qualche sito registrato li, ma non ho nessun account di hosting, per cui non vedo i path.

Però, un path su di un hosting professionale che non contenga lo username, non mi suona bene. Non vorrei che usassi il path che trovi nel file manager o nell'ftp, che probabilmente hanno la home dopo il tuo username...
Anche la cartella web subito sotto la / non mi suona.

Per quanto ne so io (che non sono un sistemista) i server dei provider hanno path tipo "/usr/pincopallo/web/..."

Hai provato ad usare le variabili di path di Joomla per indirizzare il file?
Codice: [Seleziona]
<?php echo $this->baseurl ?>
Un esperto mi ha detto:"Per avere un sito web sicuro, installalo su di un server locale, poi spegnilo e stacca i cavi". Mi hanno rubato il computer.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #24 il: 11 Mag 2010, 22:08:23 »
No, mi trovo nella root di un server Aru.. con s.o. Unix

ciao maxtemp, non ci crederai ma avevamo riconosciuto la rotta per i caraibi  ;)

nello ftp non vedi la home nella path, ma è giusto che ci sia, come immagino tu avrai appreso dalla documentazione o dedotto da configuration.php.

è per quello che ti ho insistito nel dirti che la cosa funziona: esperienza personale.

ricordati però di aggiungere il modificatore LOCAL, dato che, server virtuali a parte, la path è relativa al client e non al server.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #25 il: 12 Mag 2010, 01:26:48 »
Miticoooo
Funziona!
Già pensavo di adottare altre strade, per la cronaca il mio database si chiama Prova e ho dovuto rispettare la lettera maiuscola iniziale.
Grazie ancora.
comunque la risoluzione è stata nell'utilizzo di LOCAL.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #26 il: 12 Mag 2010, 10:20:01 »
ricordati di mettere [RISOLTO] nel titolo del post di apertura, grazie.

che il nome utente sia case sensitive ok, il db mi quadra poco...

Navigando su internet [...] i permessi di amministratore che non ho.

 >:( >:(
in internet, come nella vita, c`è un sacco di gente che parla solo perché ha la lingua in bocca; il fatto di non avere nessuna competenza, neanche la capacità base di leggere e comprendere la documentazione, non li ferma certo, anzi meno ne sanno più sono arroganti.

un consiglio per la prossima volta: se dedicherai un oretta a leggere la documentazione scoprirai che poi risolvi tutto in venti minuti  ;D ;D


@all
in questi casi si usa praticamente sempre il modificatore LOCAL per indicare alla macchina (al client sulla macchina) di processare localmente il file e poi trasferirne il contenuto al server, che altrimenti non avrebbe modo di accedervi.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline maxtemp

  • Nuovo arrivato
  • *
  • Post: 41
  • Sesso: Maschio
    • Mostra profilo
Risolto
« Risposta #27 il: 12 Mag 2010, 11:05:36 »
Non il nome utente ma il nome della tabella era case sensitive.
Grazie ancora.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Caricare Csv in database Mysql di Joomla
« Risposta #28 il: 12 Mag 2010, 11:19:02 »
errore della 3.23, corretto nella 4.0... ritorna nella 5?  ;D

il [RISOLTO]!!!  >:(

ciao
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif