Jump to content

FAQ/Base/Come importare un file CSV in Base

From The Document Foundation Wiki
< Faq | Base
This page is a translated version of the page Faq/Base/How to import CSV into Base and the translation is 100% complete.

Esistono più modi per importare dati da un file .csv in una tabella di Base, e non tutti sono documentati nell'aiuto integrato. Ragionevolmente, quelli omessi dalla documentazione sono quelli che presentano le curve di apprendimento più ripide.

Le strategie più semplici prevedono l'uso di un'applicazione di supporto e poi l'utilizzo di copia/incolla dall'applicazione di supporto al database di destinazione. L'applicazione di supporto potrebbe essere Calc (metodo 1 descritto di seguito), Base (metodo 2 descritto di seguito) o qualche altro programma esterno a LibreOffice (non ancora documentato qui, ma eventuali aggiunte appropriate a questa pagina sono benvenute!)

In sintesi, i metodi sono

  1. Utilizzate Calc come applicazione di supporto e copiate/incollate i dati nel database di destinazione
  2. Utilizzate Base due volte in finestre separate (come applicazione di supporto e per aprire rispettivamente il database di destinazione). Usate copia/incolla per trasferire i dati da un'intera tabella al riquadro delle tabelle del database di destinazione.
  3. Usate Base due volte, come sopra, ma scrivete un codice Macro di LibreOffice adatto nella destinazione e attivatelo da un modulo ogni volta che desiderate trasferire i dati. (Più lavoro per il programmatore; più semplice per l'utente finale!)
  4. Usate Base una sola volta e aprite i file di testo all'interno del database di destinazione. Contrariamente a quanto indicato nella Guida di LibreOffice, questo è possibile, ma richiede l'uso di un comando SQL non standard ed è l'unico metodo che consente al motore del database di modificare direttamente i dati nei file .csv.


Ciascuno dei metodi sopra descritti ha vantaggi e svantaggi diversi. Sono elencati in ordine dal più semplice per un nuovo utente di LibreOffice al più complesso.

In modo più dettagliato.

Calc come supporto. È importante che la prima riga contenga i nomi di ciascuna colonna e che i dati inizino dalla riga 2. È altrettanto importante controllare le opzioni che Calc offre ogni volta che aprite un file .csv. I separatori sono appropriati? Il processo di importazione funziona meglio se è presente un solo tipo di separatore, quindi lasciate selezionato solo quello effettivamente utilizzato nel file. (Se questa impostazione non è corretta, il processo funzionerà nella maggior parte dei casi, ma potrebbero verificarsi errori occasionali difficili da individuare).

Inoltre, se l'input contiene date, dovete considerare due aspetti: selezionate "Riconosci numeri speciali" (poiché Calc memorizza le date in questo modo) e, sopra ogni colonna contenente date, fate clic su "Standard" nella parte superiore della colonna e modificatelo in "Data". Quindi, nel menu a discesa, selezionate G/M/A o M/G/A, a seconda del formato più adatto.

Quando incollate i dati nel riquadro delle tabelle in Base, vi consiglio di incollarli in una tabella senza chiave primaria, a meno che non siate sicuri che uno dei campi possa funzionare come chiave. Avrete la possibilità di creare una nuova tabella vuota (Solo definizione), una nuova tabella con i dati incollati (Dati e definizione) oppure di aggiungere i dati a una tabella esistente

  1. Base come supporto per copia/incolla. Anche in questo caso è importante che il vostro file o i vostri file abbiano i nomi delle colonne nella prima riga. Questo metodo consente di creare un database di sola lettura in cui le tabelle sono effettivamente i file .csv. Se sono presenti più file, devono trovarsi tutti nella stessa cartella, quindi create una cartella apposita per questo scopo. Dovrete indicare a Base dove si trova quella cartella, non i file effettivi. Nuovi file possono essere aggiunti successivamente e appariranno automaticamente nel database di supporto ogni volta che viene aperto.

Le opzioni per personalizzare i formati .csv sono più limitate in questo metodo. Fondamentalmente, se le impostazioni locali configurate nel sistema operativo corrispondono a quelle del software che ha generato il file, il tutto dovrebbe funzionare correttamente. In caso contrario, soprattutto se notate che le date sono interpretate in modo errato tra i formati statunitensi ed europei (ad esempio, 7/4 è il sette aprile per noi ma il quattro luglio negli Stati Uniti) o se alcune date compaiono come NULL (o mancano intere righe), potete sperimentare le impostazioni nel database di supporto: andate su Strumenti nella barra del menu, quindi Opzioni -> Lingue -> Impostazioni della lingua.

Se non riuscite a risolvere il problema in questo modo, provate a utilizzare Calc come supporto per l'importazione.

  1. Base come supporto, ma con una Macro per il trasferimento. Questo metodo inizia esattamente come l'opzione 2, e valgono le stesse considerazioni sulla personalizzazione dei formati .csv. Tuttavia, il trasferimento dei dati non avviene tramite copia/incolla.

Invece, dovete scrivere una Macro che venga attivata da un pulsante in un modulo nel database di destinazione. Ogni volta che l'utente fa clic su quel pulsante, i dati vengono trasferiti automaticamente.

Questo approccio è molto più intuitivo per l'utente finale: qualsiasi processo venga usato per ottenere il file .csv può essere configurato per scriverlo direttamente nella cartella di riferimento, e l'utente dovrà semplicemente premere un pulsante anziché copiare e incollare i dati manualmente.

D'altra parte, questo metodo rappresenta una sfida maggiore per il programmatore, e i dettagli esatti della sua implementazione vanno oltre l'ambito di questa guida.

  1. Usare il database di destinazione per leggere direttamente i file .csv di input. Questo è di gran lunga il metodo più difficile da programmare, ma è il più semplice per l'utente finale una volta che è funzionante. Richiede l'uso di un'estensione non standard per HSQLDB nella finestra Strumenti -> SQL; il comando inizia con CREATE TEXT TABLE ... e, ancora una volta, i dettagli esatti sono oltre l'ambito di questa guida, ma dovranno essere inseriti separatamente per ciascun file che si desidera collegare.

Questo metodo funziona da anni con il motore HSQLDB incorporato. Dovrebbe funzionare anche con connessioni a un motore HSQLDB esterno, ma per altri database la sintassi e la compatibilità potrebbero variare. In particolare (e nonostante quanto indicato nella Guida di LibreOffice), una volta che questo metodo è funzionante, consentirà al database di scrivere direttamente nei file di testo.