Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

pass-through di accodamento

92 views
Skip to first unread message

RINGHITT

unread,
Sep 11, 2016, 11:44:09 AM9/11/16
to
Buonasera

Dovrei accodare i valori di una tabella di access in una tabella in mysql.

Potete aiutarmi a farlo con una query pass-through
Attualmente utilizzo le tabelle collegate, ma la velocità dell'accodamento è molto lenta.

Le tabelle da accodare possono essere al massimo 1000 e all'interno ci sono parecchi campi in rtf

Grazie

Ringhitt

@Alex

unread,
Sep 11, 2016, 7:00:59 PM9/11/16
to
Non comprendo bene... se le tabelle sono in Access a cosa servirebbe una query PT..?
Devi proprio copiare i dati da Access a MySql.
La cosa che mi lascia perplesso oltremodo è il fatto che dici di avere 1000 tabelle..?
Mai viste così tante tabelle...
Sei sicuro di aver strutturato secondo almeno le prime 3 forme Normali..?

@Alex

RINGHITT

unread,
Sep 12, 2016, 4:31:55 AM9/12/16
to
Buongiorno Alex
Mi sono espresso male
Ho dei dati su una tabella in access che devo riportare su una tabella mysql
Non sono 1000 tabelle ma 1000 record al massimo che devo trasferire da access a mysql
La query PT mi serve per velocizzare il processo di trasferimento dati.

@Alex

unread,
Sep 12, 2016, 5:18:41 AM9/12/16
to
...
> Buongiorno Alex
> Mi sono espresso male
> Ho dei dati su una tabella in access che devo riportare su una tabella mysql
> Non sono 1000 tabelle ma 1000 record al massimo che devo trasferire da access a mysql
> La query PT mi serve per velocizzare il processo di trasferimento dati.

Se sai come funziona una Query PT la tua richiesta ha già una risposta, o meglio non continueresti a dire che ti serve una Q_PT...!
Mi sorge il dubbio infatti tu non abbia ben chiaro come funziona una Q_PT e che, per sentito dire, tu abbia letto che sono più veloci... ma senza entrare nel merito... quindi ti suggerisco di riflettere sulla tua richiesta.

LE Q_PT vengono eseguite lato SERVER, quindi ti chiedo, il Motore del SERVER di MySQL cosa ne sa delle Tabelle che hai nel CLIENT...?

In merito alla tua azione, un trasferimento di 1000Records non puo rallentare, se hai la Tabelle correttamente indicizzata nella selezione, ne consegue che la tua problematica è quanto meno da studiare in quanto impossibile a meno di gravi deficit di impostazioni.

@Alex

RINGHITT

unread,
Sep 12, 2016, 8:56:28 AM9/12/16
to
Grazie Alex

Si credo di sapere cosa è una PT, ma volevo verificare se l'inserimento dei dati su mysql con una query pt creata creata dinamicamente con i valori desunti da un recordset fosse più veloce.

Allora ti faccio un'altra domanda, secondo te 6 secondi per scrivere 80 righe su mysql non sono troppe?

la tabella del database su mysql non posso modificarla io in quanto è di un programma di contabilità e non è stata creata da me.

Comunque ho capito che devo abbandonare questa cosa che mi era venuta in mente.

Nell'applicazione che uso utilizzo le PT come eliminazione di dati sul server, con codice preso dal tuo sito.

Ringhitt



@Alex

unread,
Sep 12, 2016, 4:50:09 PM9/12/16
to
Una PT con i dati desunti da un Recordset...
Quando hai voglia spiega questa affermazione perché fatico a capirla... va bene anche un grafico...

6 secondi sono un valore che in se non dice nulla...
Purtroppo non hai dato nessun dettaglio tecnico e personalmente sono più propenso a pensare che ci sia qualche grosso problema...
Solo per curiosità posta la query di inserimento... spiegaci se i campi sono indicizzati, se esiste una chiave primaria e di che tipo è lato server...
Insomma parliamo in modo tecnico altrimenti facciamo solo polvere.

@Alex

RINGHITT

unread,
Sep 13, 2016, 10:30:30 AM9/13/16
to
Allora
Server Mysql 5.7 con engine MyIsam

I dati sono indicizzati su mysql
esiste una chiave primaria e parecchi altri indici che vanno dal numero del progressivo alla sequenza ecc ecc
Sulla tabella in access i dati non sono indicizzati in quanto contiene solo i nuovi record da trasferire su mysql, record che non vanno in contrasto con gli indici di mysql, per questo ho delle funzioni apposite.

la tabella in access si chiama pvr
la tabella in mysql si chiama pvr1

questa è l'sql della query di accodamento

INSERT INTO pvr1 ( PROGRESSIVO, RIGA, ART_CODICE, QUANTITA, QUANTITA_EVASA, PREZZO, TSM_CODICE, IMPORTO, IMPORTO_EURO, IMPORTO_EVASO, DOCUMENTO_ORIGINE, TIPO_MOVIMENTO, DOC_PROGRESSIVO_ORIGINE, DOC_RIGA_ORIGINE, NUMERO_COLLI, NUMERO_COLLI_EVASI, NUMERO_CONFEZIONI, NUMERO_CONFEZIONI_EVASE, IMPORTO_IVA, IMPORTO_IVA_EURO, TIV_CODICE, GEN_CODICE, GEN_CODICE_STORNO, PERCENTUALE_PROVVIGIONI, PERCENTUALE_PROVVIGIONI_CA, IMPORTO_PROVVIGIONI, IMPORTO_PROVVIGIONI_CA, IMPORTO_PERCENTUALE_PROVVIGIONI, IMPORTO_PERCENTUALE_PROVV_CA, IMPORTO_STATISTICO_INTRA, [NOTE], NOTE_ART, SITUAZIONE, SALDO_ACCONTO, UTENTE, DATA_ORA, PREZZO_NETTO, DATA_CONSEGNA, DESCRIZIONE1, DESCRIZIONE2, QUANTITA_APPRONTATA, PREZZO_BLOCCATO, NOTE_INTERNE, EVADERE_NOTE, TMA_CODICE, TSM_CODICE_ART, EVADOC_NUMERO_COLLI, EVADOC_NUMERO_CONFEZIONI, EVADOC_QUANTITA, EVADOC_PREZZO, EVADOC_IMPORTO, EVADOC_SALDO_ACCONTO, EVADOC_TSM_CODICE, EVADOC_TSM_CODICE_ART, EVADOC_TIPO_MOVIMENTO, EVADOC_DATA_CONSEGNA, INIZIO_CONFIGURAZIONE, FINE_CONFIGURAZIONE, RIGA_DDT, CONFIGURAZIONE, SALDO_ACCONTO_APPRONTATO, STAMPA_CONFIGURAZIONI, PREZZI_CONFIGURAZIONE, TMA_CODICE_COLLEGATO, TVA_CODICE, PERCENTUALE_OSCILLAZIONE_CAMBIO, UTENTE_CREAZIONE, DATA_ORA_CREAZIONE, DATA_INIZIO_COMPETENZA, DATA_FINE_COMPETENZA, QUANTITA_COLLO, TIM_CODICE, EVADERE_APPRONTATO, IMPORTO_SCONTO, EVADOC_IMPORTO_SCONTO, IMPORTO_SCONTO_EVASO, TUM_CODICE, RIGA_ORIGINE_CONAI, TR1_CODICE, ESENZIONE_CONAI, NO_FATTURA, SEQUENZA, IGNORA_NOTE_ART, DIMENSIONE1, DIMENSIONE2, DIMENSIONE3, VARIANTI_DINAMICHE, KIT, QUANTITA_KIT, FORMULA, NO_IMPEGNATO, CMS_CODICE, TIPOLOGIA, TOTALE_PROGRESSIVO, LOTTO, ID_ECOMMERCE, IVA_BLOCCATA, PREZZO_NETTO_LISTINO, CEN_CODICE, TVC_CODICE, QUANTITA_CONAI, QUANTITA_UNITARIA_CONAI, PERCENTUALE_ESENZIONE_CONAI, NUMERO_COLLI_APPRONTATO, NUMERO_CONFEZIONI_APPRONTATO, CAT_PROGRESSIVO, ID_VTIGER, ARTP_CODICE, evadoc_saldo_materie_prime, evadoc_scarti, lavvet, lavvet_perimetro, punto_vendita, soggetto_addebito_enasarco, tea_codice, tum_quantita_base, tum_quantita_evasa_base, tum_quantita_approntata_base, evadoc_tum_quantita_base, tipo_imballaggio, percentuale_sconto_globale_riga, percentuale_sconto_globale_riga2, percentuale_sconto_globale_riga3, ART_CODICE_PADRE, pesoriga, QUANTITA_PADRE, univocopvr, larghezza, altezza, pesounitario, profondita, COSTO_UNITARIO )
SELECT pvr.PROGRESSIVO, pvr.RIGA, pvr.ART_CODICE, pvr.QUANTITA, Nz([QUANTITA_EVASA],0) AS eva, pvr.PREZZO, Nz([TSM_CODICE],0) AS ttttsm, pvr.IMPORTO, pvr.IMPORTO_EURO, 0 AS ev, Nz([DOCUMENTO_ORIGINE],"") AS ddocor, pvr.TIPO_MOVIMENTO, 0 AS DOC_PROGRESSIVO_ORIGINES, 0 AS DOC_RIGA_ORIGINES, Nz([NUMERO_COLLI],0) AS COL, Nz([NUMERO_COLLI_EVASI],0) AS COE, Nz([NUMERO_CONFEZIONI],0) AS NCF, Nz([NUMERO_CONFEZIONI_EVASE],0) AS NCF1, pvr.IMPORTO_IVA, pvr.IMPORTO_IVA_EURO, pvr.TIV_CODICE, Nz([GEN_CODICE],"") AS gggencod, Nz([GEN_CODICE_STORNO],"") AS ggcodsto, Nz([PERCENTUALE_PROVVIGIONI],0) AS PP, Nz([PERCENTUALE_PROVVIGIONI_CA],0) AS PP1, Nz([IMPORTO_PROVVIGIONI],0) AS PP3, Nz([IMPORTO_PROVVIGIONI_CA],0) AS PP4, Nz([IMPORTO_PERCENTUALE_PROVVIGIONI],0) AS PP5, Nz([IMPORTO_PERCENTUALE_PROVV_CA],0) AS PP6, Nz([IMPORTO_STATISTICO_INTRA],0) AS Espr1, pvr.NOTE, "no" AS NOTE_ART, pvr.SITUAZIONE, Nz([SALDO_ACCONTO],"") AS ssacc, pvr.UTENTE, pvr.DATA_ORA, Nz([PREZZO_NETTO],"0.000000") AS ppnett, pvr.DATA_CONSEGNA, pvr.DESCRIZIONE1, pvr.DESCRIZIONE2, 0 AS appr, "si" AS blocc, pvr.NOTE_INTERNE, "si" AS evanot, 1 AS TMA_CODICEs, Nz([TSM_CODICE_ART],"") AS tttsssmmcodart, 0 AS EVADOC_NUMERO_COLLIs, 0 AS EVADOC_NUMERO_CONFEZIONI, 0 AS EVADOC_QUANTITA, 0 AS EVADOC_PREZZO, 0 AS EVADOC_IMPORTO, Nz([EVADOC_SALDO_ACCONTO],"") AS eevvaadd, Nz([EVADOC_TSM_CODICE],"") AS eeva2, Nz([eVADOC_TSM_CODICE_ART],"") AS Eeeva3, Nz([EVADOC_TIPO_MOVIMENTO],"") AS eva4, pvr.EVADOC_DATA_CONSEGNA, "no" AS INIZIO_CONFIGURAZIONEs, "no" AS FINE_CONFIGURAZIONEs, "no" AS RIGA_DDTs, 0 AS CONFIGURAZIONEs, "no" AS SALDO_ACCONTO_APPRONTATOs, "no" AS STAMPA_CONFIGURAZIONIs, "no" AS PREZZI_CONFIGURAZIONEs, Nz([TMA_CODICE_COLLEGATO],"") AS ttmmaaccll, Nz([TVA_CODICE],"") AS tttvacodice, 0 AS PERCENTUALE_OSCILLAZIONE_CAMBIOs, fUserName() AS ut, pvr.DATA_ORA_CREAZIONE, pvr.DATA_INIZIO_COMPETENZA, pvr.DATA_FINE_COMPETENZA, Nz([QUANTITA_COLLO],0) AS qcol, Nz([TIM_CODICE],"") AS ttimc, Nz([EVADERE_APPRONTATO],"") AS evadappr, pvr.IMPORTO_SCONTO, Nz([EVADOC_IMPORTO_SCONTO],0) AS evadocimps, Nz([IMPORTO_SCONTO_EVASO],0) AS impsceva, pvr.TUM_CODICE, 0 AS RIGA_ORIGINE_CONAIs, Nz([TR1_CODICE],"") AS ttr1cod, "no" AS ESENZIONE_CONAIs, "no" AS NO_FATTURAs, pvr.SEQUENZA, "no" AS IGNORA_NOTE_ARTs, Nz([DIMENSIONE1],0) AS d1, Nz([DIMENSIONE2],0) AS d2, Nz([DIMENSIONE3],0) AS d3, "no" AS VARIANTI_DINAMICHEs, "no" AS KITs, 0 AS QUANTITA_KITs, Nz([FORMULA],"") AS fform, "no" AS NO_IMPEGNATOs, Nz([CMS_CODICE],"") AS ccmscod, Nz([TIPOLOGIA],"") AS ttipsss, "no" AS TOTALE_PROGRESSIVOs, Nz([LOTTO],"") AS lllotto, Nz([ID_ECOMMERCE],"") AS idcomm, Nz([IVA_BLOCCATA],"no") AS ivablocc, Nz([PREZZO_NETTO_LISTINO],"0.000000") AS prnelis, Nz([CEN_CODICE],"") AS cccencod, Nz([TVC_CODICE],"") AS ttvvcc, 0 AS QUANTITA_CONAIs, 0 AS QUANTITA_UNITARIA_CONAIs, 0 AS PERCENTUALE_ESENZIONE_CONAIs, Nz([NUMERO_COLLI_APPRONTATO],0) AS ncaa, Nz([NUMERO_CONFEZIONI_APPRONTATO],0) AS nca2, 0 AS CAT_PROGRESSIVOs, 0 AS ID_VTIGERs, Nz([ARTP_CODICE],"") AS aarrttpp, Nz([evadoc_saldo_materie_prime],"") AS eevvdd, Nz([evadoc_scarti],"") AS evscar, Nz([lavvet],"") AS lllavvvett, Nz([lavvet_perimetro],"") AS llavvv, Nz([punto_vendita],"") AS ppvend, Nz([soggetto_addebito_enasarco],"si") AS enas, Nz([tea_codice],"") AS tteaacod, pvr.tum_quantita_base, pvr.tum_quantita_evasa_base, pvr.tum_quantita_approntata_base, 0 AS evadoc_tum_quantita_bases, Nz([tipo_imballaggio],"") AS tttimb, pvr.percentuale_sconto_globale_riga, pvr.percentuale_sconto_globale_riga2, pvr.percentuale_sconto_globale_riga3, pvr.ART_CODICE_PADRE, pvr.pesoriga, pvr.QUANTITA_PADRE, pvr.univocopvr, pvr.larghezza, pvr.altezza, pvr.pesounitario, pvr.profondita, 0 AS CU
FROM pvr
WHERE (((pvr.PROGRESSIVO)=[Maschere]![avvio]![PROGRESSIVO]));

La tabella su musql non l'ho creata io e non posso modificarla


Andrea

@Alex

unread,
Sep 13, 2016, 10:44:44 AM9/13/16
to
Quella query viene eseguita qualche centinaia di volte per ogni RECORD con tutti quei controlli... mi pare abbastanza ovvio...!
Se tu facessi un CICLO su un RS condizionando la scrittura del dato impiegrerebbe di meno...!

Fai una prova semplice, elimina tutti queli NZ, ed inserisci gli stessi 1000 record coerenti che non richiedano il controllo di NZ... rieseguila e vedi la differenza di tempi...!

I campi in cui scrivi "no" in modo forzato, non possono avere un DEFAULT VALUE lato Server...?

Boh....

@Alex

RINGHITT

unread,
Sep 13, 2016, 10:55:59 AM9/13/16
to
I campi in cui scrivo no, sono campi che io, per l'uso che ne faccio, uso il no
al database ci si collegano altri utenti con una applicazione diversa e quindi per loro il campo predefinito potrebbe essere si

Provo quindi ad eliminare gli nz e poi vediamo cosa succede

grazie
Andrea

RINGHITT

unread,
Sep 14, 2016, 3:58:47 AM9/14/16
to
Buongiorno

Ho fatto la modifica sulla query di accodamento, ma i risultati sono stati di un miglioramento di qualche centesimo di secondo.

Lascerò tutto così

grazie
0 new messages