Topic: Pubblico - Composto da 11 Posts di 2 Utenti.
| 17 Luglio, 2010 06:27 | #1 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
Salve a tutti e vi ringrazio anticipatamente per la collaborazione. Il mio quesito (o meglio 2) è questo. Ho realizzato un database con mysql con un unica tabella con 3 campi, ISBN (text(15), collocation (utf8_general_ci), NULL = si, TITOLO (longtext), collocation (utf8_general_ci), NULL = si,AUTORE (longtext), collocation (utf8_general_ci), NULL = si. Nei campi TITOLO e AUTORE non saranno mai (ho verificato) inseriti valori con più di 40 caratteri. Tramite un programmino in visual basic 6 devo migrare i record da 152 tabelle di access. Qual'è il problema? mi si blocca sempre sullo stesso record che apparentemente non sembra incompatibile con la struttora del data base:
l'inserimento avviene dopo aver eliminato dalle stringhe caratteri come _, %27, %26, .html ecc. Il blocco si verifica indipendentemente dalla posizione nella tabella da migrare. Un altra cosa strana, l'inserimento non avviene con lo stesso ordine dei record della tabella da migrare anche se la query di select è molto semplice: "select distinct campo5, campo6, campo7 FROM " & n I record inseriti sono circa una ventina. Il secondo questito è invece questo: per un errore nel listato del programma di visual basic, veniva inserito sempre lo stesso record, ma sui 16000 record il db andava in tilt. Il database conterrà molti più record, quindi è un problema che si presenterà non appena avrò risolto il primo quesito. Grazie per l'aiuto sperando di essere stato chiaro. |
|||||||||||
| 17 Luglio, 2010 15:48 | #2 | ||
|---|---|---|---|
|
Ciao giannidef, Benvenuto su MySQL Italia, ho spostato il topic in una sezione più adatta
Le migrazioni non sono mai semplici, riservano sempre qualche insidia.
Riguardo al primo quesito:
Ricevi qualche messaggio di errore ? il record precedente e/o il successivo come sono?
l'applicazione VB6 di cosa di occupa?
Per il secondo quesito stai tranquillo perche 16000 record non sono moltissimi, MySQL sicuramente ti sorprenderà
Facci sapere
Saluti algweb
Ultima modifica 17 Luglio, 2010 15:49 di g2d Un tempo ero algweb ora sono g2d |
|||
| 17 Luglio, 2010 22:12 | #3 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Ciao Algweb, il capo precedente è:
che inserisce regolarmente, mentre quello successivo è:
questo lo riesco a capire perchè facendo il debug della mia applicazione vb6, i valori assegnati alle variabili sono proprio quelli del record che ti ho descritto nel post precedente. Riguardo alla posizione del record nella tabella da migrare ho capito che la mia query di SELECT DISTINCT me li ordina secondo il valore del campo 5 (ma questo non è un problema) L'errore che mi da l'applicazione vb6 è: uno o più errori durante l'esecuzione del comando. il comando a cui si riferisce è:' conn.Execute query' che esegue la query di inserimento del record ne db di mysql. La mia piccola applicazione non fa altro che connettersi al db access e leggere le 152 tabelle che io ho nominato semplicemnte con un numero (da 1 a 152) in modo da facilitarne la lettura in sequenza mediante un ciclo di for; man mano che legge ogni singolo record lo inserisce nella tabella del db di mysql. Tutto funziona bene fin quando non arriva al record suddetto. Di nuovo grazie, Gianni |
|||||||||||||||||||
| 19 Luglio, 2010 07:06 | #4 | ||
|---|---|---|---|
|
Ciao giannidef,
scusami se rispondo solo ora, ma ho riletto il topic con lucidità... ed è tutto più chiaro.
Mi fai vedere un attimo la INSERT che il tuo programma VB6 utilizza per aggiungere i record (con i caratteri speciali &, .) nella tabella MySQL ?
Il Campo6 è definito come text ?
Grazie
Saluti algweb
Un tempo ero algweb ora sono g2d |
|||
| 19 Luglio, 2010 09:26 | #5 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
in effetti il problema sta proprio nei caratteri speciali, infatti non ho più sostituito i caratteri codificati con quelli speciali con il metodo replace, es: autore = replace(autore, "%27", "'") ma inserisco i record così come sono
magari li gestisco in un secondo momento. il programma li inserisce regolarmente ma fino al recordo 16351, a volte 16350 (e siamo solo ad una parte della tabella 11) ma sempre intorno a quel numero e senza apportare alcuna modifica ai record di access. I campi campo5, campo6 e campo7 in access sono definiti come text mentre in mysql campo5 è definito come text e campo6 e campo7 come lonqtext questa è la query di inserimento in mysql query = "INSERT INTO libri ( isbn, titolo, autore) VALUES ( '" & isbn & "', '" & titolo & "', '" & autore & "')" Ripeto, non sempre si blocca nello stesso punto ma varia di uno, due record e poi mysql va in tilt e a volte non riesco a leggere e record inseriti ma devo chiudere il pannello di gestione di mysql e riavviarlo. questo è il record dove, mentre scrivo, si blocca:
io, onestamente, non riesco a trovare nulla di strano rispetto agli altri record inseriti
Ultima modifica 19 Luglio, 2010 09:42 di giannidef |
|||||||||||||||||||
| 19 Luglio, 2010 10:00 | #6 | ||
|---|---|---|---|
|
Ciao giannidef,
se il programma VB6 è tuo .... puoi intervenire cercando di fare le insert a blocchi, tipo 1000 alla volta ?
puoi controllare i log di mysql e della macchina ? ....
se va in tilt il servizio MySQL è grave come cosa e non penso dipenda dai caratteri, magari qualche problema di buffer
E' un problema interessante
Saluti user:algweb Un tempo ero algweb ora sono g2d |
|||
| 19 Luglio, 2010 10:44 | #7 | ||
|---|---|---|---|
|
Ok, proverò ad inserire i record a blocchi di 1000 poi ti faccio sapere. Grazie per l'aiuto! |
|||
| 19 Luglio, 2010 12:29 | #8 | ||
|---|---|---|---|
|
Sto facendo un lavoraccio!!! L'errore che mi da mysql quando si blocca è questo: potrebbe anche dipendere da vb6. L'installazione è stata forzata su Windows Seven Ultimate
Ultima modifica 19 Luglio, 2010 12:30 di giannidef |
|||
| 19 Luglio, 2010 13:11 | #9 | ||
|---|---|---|---|
|
ci credo!
quest'errore lo ricevi in seguito a cosa ? hai spacchettato il tutto in gruppi da 1000 insert?
una curiosità, ma se provassi a farti scrivere dei csv e poi li importi con mysql ?
Che ne pensi ?
magari è un modo per uscirne velocemente
saluti algweb
Un tempo ero algweb ora sono g2d |
|||
| 19 Luglio, 2010 14:37 | #10 | ||
|---|---|---|---|
|
Ho provato con un csv ed ecco il risultato Importazione eseguita con successo, 361237 query eseguite. Il problema deve essere vb6 grazie ALGWEB!! |
|||
Condividi su:
Loggati o Registrati per replicare