Ho risolto,
Grazie comunque mau_develop, la tua domanda iniziale:
mi dici la struttura della tua tabella "locale" e quella di vm in cui intendi importare/aggiornare?
devono avere un key comune e univoca per poter fare qs. meglio se un id
M.
mi ha spinto a cercare la soluzione nella giusta direzione.
Riepilogo il tutto, magari può tornare utile a qualcuno.
Ho un vecchio gestionale locale.
Poi ho fatto un sito web e-commerce, ma voglio continuare a utilizzare il vecchio gestionale.
Tutti gli ordini passano da qui, anche quelli che prenderò dal sito web (con il gestionale emetto le fatture e scarico le giacenze di magazzino - gli ordini non arrivano solo dal sito, anzi).
Ho quindi necessità di sincronizzare almeno le giacenze degli articoli tra gestionale e sito.
Sul sito ci inserisco parte degli articoli che ho sul gestionale.
Ovviamente gli articoli, che si corrispondono sul gestionale e sul sito, li chiamo con lo stesso codice.
Dal gestionale locale posso esportare solo un file in formato txt.
Ho due campi, Codice e Quantità (separati dal punto e virgola).
Apro il txt con il foglio elettronico e aggiungo una colonna che utilizzerò per il campo product_id.
Prima di salvare, formatto tutte le caselle come TESTO e quindi salvo in formato CSV.
Poi con PhpMyAdmin, ho creato la tabella sul data base:
jos_vm_product_agg
La struttura è con 3 campi
-- Struttura della tabella `jos_vm_product_agg`
--
CREATE TABLE IF NOT EXISTS `jos_vm_product_agg` (
`product_id` int(11) NOT NULL auto_increment,
`product_sku` varchar(64) NOT NULL default '',
`product_in_stock` int(11) NOT NULL default '0',
PRIMARY KEY (`product_id`),
KEY `idx_product_sku` (`product_sku`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Quindi i 3 campi hanno la stessa struttura della tabella da aggiornare.
Poi ho utilizzato il file CSV per caricare i dati aggiornati del gestionale nella tabella jos_vm_product_agg (ogni volta che devo aggiornare svuoto e reimporto i dati con il nuovo CSV).
Poi basta eseguire lo Script direttamente dal PhpMyAdmin → seleziona il DB → seleziona la tabella jos_vm_product → SQL (voce di menu, per eseguire gli script).
Ci scrivo:
UPDATE `jos_vm_product` t1 SET product_in_stock =
(SELECT product_in_stock FROM `jos_vm_product_agg` t2 WHERE t2.product_sku = t1.product_sku)
e le quantità sono aggiornate in 0.0004 sec.
Esattamente quello che volevo.
Dovendo entrare in PhpMyAdmin (per aggiornare la tabella jos_vm_product_agg), a questo punto non ha senso impostare il cronjob. Subito dopo lancio lo script ed è fatto l'aggiornamento.