Newsgroup: it.comp.www.php
Titolo: da ACCESS a MYSQL (su server Aruba)

Ho realizzato una chat board che allo stato attuale è un database di
tre tabelle (utenti - logtable - messaggi) per un totale di 40MB
attivi.
Potete immaginare che la disponibilità di MYSQL sia quasi un
miraggio... Ho attivato immediatamente 100MB "personali" e 50MB "per
clienti", e attiverò sicuramente altri moduli a breve per un totale di
500MB e una decina di database.
Ho provato alcuni link trovati nei topic, e mi pare che la velocità di
estrazione dei dati sia di 10:1 rispetto ad ACCESS (a spanne,
s'intende).
Utilizzando MyODBC il passaggio dei sistemi già esistenti (realizzati
con ASP-ACCESS) dovrebbe essere sufficientemente rapido, in quanto si
dovrebbero cambiare solo le connessioni, e qualche riga per le query,
se non sbaglio.
Ecco le domande, dopo tutta questa premessa:
1.) E' meglio, ovvero più veloce come esecuzione ed estrazione del
database, utilizzare PHP o è sostanzialmente uguale usare ASP?
(estrazione 10 record per volta a cursore e filtro in query, più 2
query aggiuntive di servizio)
2.) Importazione dati e strutture da ACCESS a MYSQL: ho provato a
utilizzare lo script indicato in
http://forum.aruba.it/forums/ultimatebb.php?ubb=get_topic;f=49;t=000025
carino, ma non più tabelle da problemi, e comunque mi si ferma ogni
volta dopo aver convertito 3.1 MB dando l'errore tradotto "Si sono
verificati errori in un'operazione composta da più passaggi.
Controllare i singoli valori di stato."
Ho provato a caricare tramite SQL ma, dopo un quarto d'ora, mi da una
pagina bianca nel frame di destra del pannello di gestione, con un bel
"azione annullata"... senza ovviamente poi aver fatto nulla... grr....
Il file *.SQL è creato come esportazione da un SqlManager shareware in
locale (a proposito, conoscete un manager freeware utile ai nostri
scopi e che abbia un qualche linguaggio di script per automatizzare le
importazioni/esportazioni; e conoscete un sito con buone risorse,
magari in italiano, su MySql?)
inizia così e prosegue per 18MB
CREATE TABLE `msg` (
`idmsg` bigint(20),
`idutenti` bigint(20),
`oggetto` VARCHAR(255),
`messaggio` TEXT,
`dataora` DATETIME,
`IP` VARCHAR(20),
`utentep` VARCHAR(255)
);
COMMIT;
INSERT INTO `msg` 
(`idmsg`,`idutenti`,`oggetto`,`messaggio`,`dataora`,`IP`,`utentep`)
VALUES
('11111','','xxxxxxxx','xxxxxxxxxxxxx','2002-03-29 00:00:00','','xxxx
(xxx...@xxxxx.xx)'),
e così via per 25000 record...
COMMIT;
**********************+
Ciao
Gianluca

TROVATO!!!
il problema si verifica quando si maneggiano testi contententi il "?"
ho dovuto fare questa routine (non è pulita, ma puo' essere utile) per
risolvere il problema...
********************
if not isnull((rs.fields(n).value)) then
 passatore = cstr(rs.fields(n).value)
 passatore = replace(passatore, chr(10), chr(32))
else
 passatore = ""
end if
stringapulita = ""
for inder = 1 to len(passatore)
 filtrore = mid(passatore, inder,1)
  if (asc(filtrore) >=63) and (asc(filtrore) <=63) then filtrore =
chr(asc(filtrore))
 stringapulita = stringapulita & cstr(filtrore)
next
if (rs.fields(n).NAME) = "messaggio" or (rs.fields(n).NAME) =
"oggetto" or (rs.fields(n).NAME) = "utentep" then
  rs1.fields(rs.fields(n).name).value=cstr(stringapulita)
else
  rs1.fields(rs.fields(n).name).value = rs.fields(n).value
end if
********************