Dimensione file access

di il
35 risposte

Dimensione file access

Buongiorno a tutti,

ho un problema con la dimensione del file della mia applicazione access. So che la dimensione massima è sui 4 gb e purtroppo per alcune lavorazioni capita che la supero e si blocca l'esecuzione.

Entro nel dettaglio. 

Parto con una dimensione del file access di pochi Mb. Lancio delle esecuzioni su tabelle di alcuni milioni di record e arrivo al limite dei 4 gb. Quindi sono costretto a fare lavorazioni parziali e poi unire i pezzi.  Tra una lavorazione parziale e l'altra devo uscire e compattare il Db.

C'è un modo dinamico per controllare la dimensione del file? Ma soprattutto…perchè diventa di quella dimensione?

Grazie

35 Risposte

  • Re: Dimensione file access

    Sono 2 G

    Leggi

    https://support.microsoft.com/it-it/topic/specifiche-di-access-0cf3c66f-9cf2-4e32-9568-98c1025bb47c

    e la Nota

    Se cancelli milioni di record, la cancellazione è logica ma fisicamente restano nel file, finchè non si compatta.

  • Re: Dimensione file access

    23/11/2023 - oregon ha scritto:


    Sono 2 G

    Leggi

    https://support.microsoft.com/it-it/topic/specifiche-di-access-0cf3c66f-9cf2-4e32-9568-98c1025bb47c

    e la Nota

    Se cancelli milioni di record, la cancellazione è logica ma fisicamente restano nel file, finchè non si compatta.

    Ok, 

    un sistema per ovviare alla compattazione non c'è? 

  • Re: Dimensione file access

    23/11/2023 - AngeloBrac ha scritto:


    un sistema per ovviare alla compattazione non c'è? 

    Ma allora non hai letto quello che ti ho scritto

  • Re: Dimensione file access

    23/11/2023 - oregon ha scritto:


    23/11/2023 - AngeloBrac ha scritto:


    un sistema per ovviare alla compattazione non c'è? 

    Ma allora non hai letto quello che ti ho scritto

    Ho letto ho letto. CI ho provato.  :)

  • Re: Dimensione file access

    23/11/2023 - AngeloBrac ha scritto:


    CI ho provato. ????

    ???

  • Re: Dimensione file access

    Salvo la procedura di compattazione che non è di certo una cosa da sottovalutare, come è già stato evidenziato, ce ne vuole a riempire un db con 2Gb di dati. Anche se io sospetto che ci siano delle immagini dentro al db.

  • Re: Dimensione file access

    Basta cancellare milioni di record molte volte …  Certo che se ci sono anche immagini …

    A questo punto rivedrei il meccanismo della cancellazione di massa.

    Oppure passerei anche a SQL Server

  • Re: Dimensione file access

    @AngeloBrac, purtroppo stai facendo un uso ‘improprio’ dello strumento. 

    Access e' un aggeggino per produttività personale, come tale e' pensato per gestire al massimo decine di migliaia di record, diciamo qualche centinaio di migliaia, non certamente milioni o piu'.

    Per questi ordini di grandezza ci sono strumenti PREPOSTI e progettati proprio con questo obiettivo: SQL Server, MYSQL, POSTGRESQL, Oracle, di cui esistono anche le versioni community.

    E' come voler usare l'Ape Piaggio per trasportare massi provenienti dalla cava di marmo. Per queste cose ci sono i Dumper della Caterpillar che pesano 30 tonnellate ma riescono a trasportarne 50!

    Devi rivedere l'approccio: ridurre la dimensione della tabella, magari usandone diverse, oppure usare strumenti piu' potenti

    (che poi e' esattamente quello che e' stato scritto precedentemente) 

  • Re: Dimensione file access

    23/11/2023 - migliorabile ha scritto:


    @AngeloBrac, purtroppo stai facendo un uso ‘improprio’ dello strumento. 

    Access e' un aggeggino per produttività personale, come tale e' pensato per gestire al massimo decine di migliaia di record, diciamo qualche centinaio di migliaia, non certamente milioni o piu'.

    Per questi ordini di grandezza ci sono strumenti PREPOSTI e progettati proprio con questo obiettivo: SQL Server, MYSQL, POSTGRESQL, Oracle, di cui esistono anche le versioni community.

    E' come voler usare l'Ape Piaggio per trasportare massi provenienti dalla cava di marmo. Per queste cose ci sono i Dumper della Caterpillar che pesano 30 tonnellate ma riescono a trasportarne 50!

    Devi rivedere l'approccio: ridurre la dimensione della tabella, magari usandone diverse, oppure usare strumenti piu' potenti

    (che poi e' esattamente quello che e' stato scritto precedentemente) 

    Purtroppo sono in un contesto dove devo organizzarmi (e nemmeno posso tanto) per conto mio. Comprendo benissimo che per grosse moli di dati sarebbe opportuno usare strumenti adeguati ma non posso e devo arrangiarmi. Nel db no ci sono immagini. l'elaborazione riguarda 12 file di testo ognuno da oltre due milioni di record che devono essere distribuiti in varie tabelle ognuna con un tracciato record differente. Quindi ecco che anche cancellando il contenuto delle tabelle dopo ogni ciclo la dimensione del file aumenta e arriva ai limiti.

    Nessuna immagine, solo testo. Ed anche tenendo i file fuori dal Db ma collegandoli rimane sempre lo stesso problema.

  • Re: Dimensione file access

    A me il problema appare assolutamente MISTERIOSO in mancanza di una elencazione di nomi propri di tabelle, campi, relazioni. Potrei sbagliarmi, ma (in mancanza di presenza di immagini all'interno del database) qualcosa mi dice che vi sia un problema di NORMALIZZAZIONE alla base.

  • Re: Dimensione file access

    Purtroppo “non si fanno le nozze coi fichi secchi” …

    Se vuoi gestire milioni di record continuamente (cancellazioni/inserimenti di massa) devi usare uno strumento adeguato (SQL Server Express gestisce fino a 10 GB, con lo Standard 524 PB).

    Altrimenti, con Access, da codice, prova ad eseguire la sequenza 

    cancellazione - compattazione - inserimento

    e vedi come va.

    @Osvaldo … perché MISTERIOSO? Il problema è chiaro e la solita solfa di conoscere i nomi delle tabelle e dei campi non serve assolutamente a nulla. E' evidente che un inserimento bulk di questo tipo comporta questi problemi al DB e al file accdb. Se il file potesse essere elaborato in maniera da eliminare molti dati ripetitivi (grazie alle relazioni) non ci è dato saperlo ma la cosa non cambierebbe molto dato che la sequenza cancellazioni/inserimenti, prima o poi, fa crescere il file.

  • Re: Dimensione file access

    Dire “file di testo” non vuol dire niente. Un “file di testo” potrebbe contenere la Divina Commedia, dei dati in forma CSV (Comma Separated Value), un document in formato XML (eXtendible Markap Language), o in formato JSON (Javascript Object Notation) o UN MILIONE  di altri formati TUTTI rappresentabili in formato TESTUALE all'interno di un “file di testo”.

    Dire che una tabella contiene del testo, anche in questo caso, non dice niente.

    Come e' fatta una tabella? quali sono i campi? cosa contengono “esattamente”?

    Magari ci sono delle “strategie” che ti permettono di risparmiare QUANTITA GIGANTESCE di memoria, e il numero di record potrebbe andare in secondo piano.

    Ma se non fornisci informazioni, noi, per la lettura del pensiero a distanza, non siamo ancora attrezzati ;-)

    Comunque resta la questione: come si suol dire

    “non si puo' cavare sangue da una rapa”

    Ci puoi girare attorno quanto vuoi, sbattere la testa fino a rompertela, ma se una cosa e' fatta male, NON E' con gli “accrocchi” che la aggiusti. Sposti solo la rogna un po' piu' in la, ma prima o poi ci risbatterai, di nuovo, la faccia.

    Alla fin fine, cosa sarebbe la vita senza un po' di “brivido” ?

  • Re: Dimensione file access

    23/11/2023 - migliorabile ha scritto:


    Dire “file di testo” non vuol dire niente. Un “file di testo” potrebbe contenere la Divina Commedia, dei dati in forma CSV (Comma Separated Value), un document in formato XML (eXtendible Markap Language), o in formato JSON (Javascript Object Notation) o UN MILIONE  di altri formati TUTTI rappresentabili in formato TESTUALE all'interno di un “file di testo”.

    Dire che una tabella contiene del testo, anche in questo caso, non dice niente.

    Come e' fatta una tabella? quali sono i campi? cosa contengono “esattamente”?

    Magari ci sono delle “strategie” che ti permettono di risparmiare QUANTITA GIGANTESCE di memoria, e il numero di record potrebbe andare in secondo piano.

    Ma se non fornisci informazioni, noi, per la lettura del pensiero a distanza, non siamo ancora attrezzati ;-)

    Comunque resta la questione: come si suol dire

    “non si puo' cavare sangue da una rapa”

    Ci puoi girare attorno quanto vuoi, sbattere la testa fino a rompertela, ma se una cosa e' fatta male, NON E' con gli “accrocchi” che la aggiusti. Sposti solo la rogna un po' piu' in la, ma prima o poi ci risbatterai, di nuovo, la faccia.

    Alla fin fine, cosa sarebbe la vita senza un po' di “brivido” ?

    Lo scopo della procedura che ho fatto è suddividere i milioni di record che lo compongono in 10 tabelle ognuna distinta dall'altra per struttura. Ogni riga del file txt ha i primi due caratteri che identificano la tipologia di record (tbl01, tbl02, tbl03 etc). Quindi il motivo della ricorsività è verificare per ogni riga a quale tabella appartiene, e secondo la lunghezza dei campi inserircela.

    Questo è un saggio del file di testo iniziale:

    02000065822023022023020400100000001081740000108174000000000000000000000000012061202303S
    02000065822023022023020403005600000451570000045157000000000000000000000000005035202303S
    020000658220230220230204118X1000000000000000000000000000000000000000000000000000202303S
    020000658220230220230204119X1000000010020000001002000000000000000000000000000112202303S
    02000065822023022023020465000100000043900000004390000000000000000000000000000489202303S
    02000065822023022023020465621000000034430000003443000000000000000000000000000384202303S
    020000658220230220230204666X0700000000000000000000000000000000000000000000000000202303S
    020000658220230220230204667F1300000288470000028847000000000000000000000000003217202303S
    02000065822023022023020475057500000530920000053092000000000000000000000000005920202303S
    020000658220230220230204888X0900000000000000000000000000000000000000000000000000202303S
    0300006582202302202302040011  08800100000001081740000009519242000000026178
    0300006582202302202302040012  02500080000001081740000002163056800000006144
    0300006582202302202302040013  00350100000001081740000000379000000000000000
    0300006582202302202302040015  00000100000001081740000000000085000000009195
    0300006582202302202302040301  08800100000000451570000003974242000000010928
    0300006582202302202302040302  02500080000000451570000000903056800000002565
    0300006582202302202302040303  00350100000000451570000000158000000000000000
    0300006582202302202302040305  00000100000000451570000000000085000000003838
    0300006582202302202302041181  08800100000000000000000000000242000000000000
    0300006582202302202302041182  02500080000000000000000000000056800000000000
    0300006582202302202302041183  00350100000000000000000000000000000000000000
    0300006582202302202302041185  00000100000000000000000000000085000000000000
    0300006582202302202302041191  08800100000000010020000000088242000000000242
    0300006582202302202302041192  02500080000000010020000000020056800000000057
    0300006582202302202302041193  00350100000000010020000000004000000000000000
    0300006582202302202302041195  00000100000000010020000000000085000000000085
    0300006582202302202302046501  08800100000000043900000000386242000000001062
    0300006582202302202302046502  02500080000000043900000000088056800000000249
    0300006582202302202302046503  00350100000000043900000000015000000000000000
    0300006582202302202302046505  00000100000000043900000000000085000000000373
    0300006582202302202302046561  08800100000000034430000000303242000000000833
    0300006582202302202302046562  02500080000000034430000000069056800000000196
    0300006582202302202302046563  00350100000000034430000000012000000000000000
    0300006582202302202302046565  00000100000000034430000000000085000000000293
    0300006582202302202302046661  08800100000000000000000000000242000000000000
    0300006582202302202302046662  02500080000000000000000000000056800000000000
    0300006582202302202302046663  00350100000000000000000000000000000000000000
    0300006582202302202302046665  00000100000000000000000000000085000000000000
    0300006582202302202302046671  08800100000000288470000002539242000000006981
    0300006582202302202302046672  02500080000000288470000000577056800000001639
    0300006582202302202302046673  00350100000000288470000000101000000000000000
    0300006582202302202302046675  00000100000000288470000000000085000000002452
    0300006582202302202302047501  08800100000000530920000004672242000000012848
    0300006582202302202302047502  02500080000000530920000001062056800000003016
    0300006582202302202302047503  00350100000000530920000000186000000000000000
    0300006582202302202302047505  00000100000000530920000000000085000000004513
    0300006582202302202302048881  08800100000000000000000000000242000000000000
    0300006582202302202302048882  02500080000000000000000000000056800000000000
    0300006582202302202302048883  00350100000000000000000000000000000000000000
    0300006582202302202302048885  00000100000000000000000000000085000000000000
    040000658220230220230204669EN000100000100002023030000000000   0000000000   0000000000
    040000658220230220230204CM1GN000100000008269999010000000806OMM0000000020   0000000000CM106582001
    040000658220230220230204S1 SN005900000013119999010000000000   0000000000   0000000000
    060000658220230220230204806008202302011658520230000020952000000000000000000000000000000
    060000658220230220230204806ERI202301212519420230000004882000000000000000000000000000000

  • Re: Dimensione file access

    Come suggerito da altri stai utilizzando un sistema di database che non è progettato per un utilizzo simile.

    Hai considerato di utilizzare Access solo per le maschere e un DBMS con SQL Server per i dati?

    Vista la massiva attività di BULK, hai provato a fare così?

    1. Eliminare la tabella con i dati da ricostruire
    2. Creare nuovamente la tabella
    3. Inserire i dati

    È solo un test che potresti fare… magari impatta meno di altri meccanismi 

Devi accedere o registrarti per scrivere nel forum
35 risposte