Dividi un CSV troppo grande
Il portale accetta 5.000 righe per volta e il tuo export ne ha 84.000. Qui il file viene tagliato in pezzi, ognuno con la riga di intestazione ripetuta in cima, pronti da caricare uno dopo l'altro. Il file resta sul tuo dispositivo.
Ogni pezzo si apre già con le colonne al posto giusto
La riga di intestazione viene ricopiata in cima a ogni pezzo, e non è un dettaglio estetico: senza, il portale che riceve il secondo file legge il primo cliente come se fossero i nomi delle colonne, e quel cliente sparisce. Vale lo stesso per Excel, per il gestionale e per chiunque riceva i pezzi: un CSV senza intestazione è una tabella di cui nessuno sa più che cosa contengono le colonne.
Davanti ai pezzi finiscono anche i tre byte che si chiamano segno UTF-8, quelli che fanno aprire a Excel «città» invece di «città ». È il motivo per cui lo stesso file si vede bene in un editor e male in Excel, ed è la lamentela numero uno di chi divide i CSV a mano. Con una eccezione, dichiarata: se il file di partenza non è scritto in UTF-8 (i gestionali italiani esportano ancora nella vecchia codifica di Windows) quel segno direbbe a Excel una cosa falsa, quindi non viene messo e la pagina te lo scrive.
I pezzi rimessi insieme ridanno il file di partenza, byte per byte
Questa pagina non riscrive niente: non ricodifica il testo, non tocca le virgolette, non cambia il separatore, non rimette in fila i decimali. Il file viene percorso a byte solo per segnare dove finisce ogni riga, e i pezzi sono ritagli dell'originale. La promessa si può scrivere in una riga sola, ed è quella su cui è costruito il collaudo: rimettendo insieme i pezzi, tolti il segno UTF-8 e le intestazioni ripetute, si riottiene esattamente il file di partenza.
Da qui viene anche il modo in cui vengono trattate le virgolette. Un campo può contenere il separatore, le virgolette raddoppiate e perfino un a capo dentro il campo, che è la trappola che rompe quasi tutte le divisioni fatte con un editor di testo: là dentro l'a capo non finisce la riga, e tagliare lì spezza il record a metà. Qui una riga finisce solo dove finisce davvero il record. Per lo stesso motivo una riga completamente vuota resta dov'è: buttarla sarebbe più pulito da vedere e romperebbe la promessa di sopra.
A righe o a peso: sono due domande diverse
«Cinquemila righe per volta» lo chiede un portale, che conta i record; «al massimo 10 MB» lo chiede una casella di posta o un modulo di caricamento, che conta i byte. Il conto in righe è esatto per definizione. Anche quello in peso lo è, e vale la pena dire perché: un pezzo qui è la somma di tre tratti di byte, quindi il suo peso si sa prima di scriverlo, non si stima; il pezzo si chiude prima di infilarci la riga che lo sfonderebbe, così ogni pezzo è il più lungo possibile. Prima di consegnartelo, il file montato viene comunque pesato davvero, e se il peso non coincide con il conto la pagina lo dice invece di darti un file di cui non sa rispondere.
Due cose da sapere sui megabyte. Qui 1 MB vuol dire un milione di byte, come li contano i siti e le caselle di posta: se chi chiede il file intendeva i 1.048.576 di Windows, i tuoi pezzi restano comunque sotto. E un allegato di posta viene riscritto in una forma che lo fa crescere di circa un terzo: con una casella che accetta 25 MB, il file vero deve stare sotto i 18-19. Se stai preparando un'email, punta lì. C'è infine il caso limite: una riga che da sola supera il limite non si può spezzare in due, quindi finisce in un pezzo suo e viene segnalata.
Quello che questa pagina non fa
Non apre i file di Excel. Un .xlsx è un archivio compresso, non un CSV, e il lettore di quegli archivi vive già in un'altra pagina del sito: tenerne due copie è il modo sicuro di farle divergere. Se quello che hai è un .xlsx, il passaggio è Da Excel a CSV.
Non ripara e non pulisce: se il file ha righe con un numero di colonne diverso, spazi di troppo o doppioni, quei difetti restano identici dentro i pezzi, perché i pezzi sono l'originale ritagliato. Il posto giusto per quel lavoro è Pulisci un CSV. Se invece devi fare il gesto contrario, cioè rimettere insieme più CSV in uno solo, c'è Unisci due CSV. E se i pezzi divisi qui vanno aperti in Excel senza perdere gli zeri davanti ai codici né trasformare i CAP in numeri, il passaggio è Da CSV a Excel.