File «.DBF»: dBase III e derivati

Il software basato sui file in formato .DBF, ovvero quelli di dBase III, negli anni 1980 è stato molto importante nell'ambito del sistema operativo Dos. Nel suo piccolo ha permesso agli utenti di quel sistema operativo di realizzare delle strutture di dati che si avvicinavano alle potenzialità di una base di dati relazionale.

Ancora oggi si trovano programmi applicativi gestionali basati su questo formato, scritti probabilmente con il famoso compilatore Clipper. Attualmente è disponibile il compilatore Harbour, che si ripromette di offrire un ambiente totalmente compatibile con il passato; tuttavia è possibile leggere il contenuto di questi file attraverso alcuni piccoli programmi.

Dbview

Il programma dbview (1) consente di leggere il contenuto dei file .DBF di dBase III e probabilmente anche le versioni di dBase IV.

dbview [opzioni] file_dbf

Se viene avviato senza opzioni, si ottiene la visualizzazione del contenuto del file indicato nel formato predefinito, come si vede dall'esempio seguente:

Articolo   : 1         
Descr      : bicicletta uomo                         
Prezzo u   : 500.00
Import     : T
Scadenza   : 20011120
Note       : 2

Articolo   : 2         
Descr      : bicicletta donna                        
Prezzo u   : 550.00
Import     : 
Scadenza   : 20011120
Note       : 3

Articolo   : 3         
Descr      : bicicletta uomo/donna leggera           
Prezzo u   : 600.00
Import     : 
Scadenza   : 20011120
Note       : 4

In realtà, così facendo, i nomi degli attributi vengono mostrati in modo diverso dal reale, utilizzando anche le lettere minuscole ed eliminando i trattini bassi. Utilizzando l'opzione -r, la prima tupla apparirebbe così:

ARTICOLO   : 1         
DESCR      : bicicletta uomo                         
PREZZO_U   : 500.00
IMPORT     : T
SCADENZA   : 20011111
NOTE       : 2

È necessario osservare che gli attributi booleani (in questo caso si tratta di quello intitolato IMPORT) mostrano solo la lettera T per il valore Vero, altrimenti non si ha alcuna indicazione; inoltre, le date vengono espresse secondo il formato aaaammgg. Infine, dall'esempio non si intuisce, ma l'attributo NOTE è di tipo «memo» e in questo caso si sono persi i dati.

I dati contenuti nei file .DBF, dal momento che sono stati memorizzati presumibilmente con un sistema operativo Dos, utilizzano molto probabilmente un insieme di caratteri ristretto e incompatibile con gli standard comuni; pertanto, è probabile che sia necessario rielaborare ciò che si ottiene con dbview attraverso un programma di conversione come Recode (sezione 47.8.1). Tuttavia, è bene considerare che nella storia dei file .DBF sono state usate anche codifiche differenti dal solito IBM437 e di questo occorre tenerne conto quando ci si accorge che la conversione non funziona come ci si aspetterebbe.

Tabella u163.3. Alcune opzioni.

Opzione Descrizione
--browse
-b
Se si utilizza questa opzione, le tuple vengono mostrate su una sola riga per volta, separando gli attributi con un simbolo, il separatore, che di solito è costituito dai due punti (:).
--delimiter x
-d x
Con questa opzione è possibile specificare il simbolo da utilizzare per separare gli attributi delle tuple che vengono visualizzate. Il simbolo di separazione predefinito sono i due punti (:)
--description
-e x
In questo caso, oltre a mostrare il contenuto del file, nella parte iniziale vengono riepilogate le caratteristiche degli attributi contenuti.
--omit
-o x
Non elenca il contenuto del file, ma si limita a dare le altre informazioni se richieste attraverso le opzioni opportune.
--reserve
-r x
Mostra i nomi degli attributi così come sono stati memorizzati.

Segue la descrizione di alcuni esempi.

DBF2pg

Il programma dbf2pg (2) consente di leggere il contenuto di un file .DBF e di inserire i dati relativi in una relazione di una base di dati di PostgreSQL.

dbf2pg [opzioni] file_dbf

In base alle opzioni che vengono indicate, i dati possono essere aggiunti a una relazione esistente, oppure possono sostituire le tuple di tale relazione, oppure si può creare una relazione da zero. Quello che conta è che i permessi fissati attraverso PostgreSQL consentano l'accesso e le operazioni che si intendono svolgere.

dbf2pg non è in grado di trasferire gli attributi «memo», quelli che tradizionalmente venivano creati utilizzando file con estensione .DBT.

Tabella u163.4. Alcune opzioni.

Opzione Descrizione
-v
-vv
Permette di avere informazioni sulle operazioni svolte, ottenendo un dettaglio maggiore nel secondo caso.
-h nodo
Permette di specificare il nodo a cui accedere per connettersi con il servente di PostgreSQL. In mancanza di questa indicazione, viene tentato l'accesso a localhost.
-d base_di_dati
Permette di specificare il nome della base di dati a cui ci si vuole connettere. In mancanza di questa indicazione, viene tentata la connessione con la base di dati test.
-t relazione
Permette di specificare il nome della relazione in cui si vogliono trasferire i dati del file .DBF. In mancanza di questa indicazione, viene tentato l'inserimento nella relazione test.
-D
Con questa opzione, si fa in modo di cancellare il contenuto della relazione di destinazione, prima di iniziare l'inserimento dei dati.
-c
Richiede espressamente che sia creata la relazione di destinazione. In mancanza di questa opzione, la relazione deve essere già disponibile, altrimenti l'operazione fallisce. Nel caso si utilizzi questa opzione mentre una relazione con lo stesso nome esiste già, si ottiene la cancellazione del suo contenuto prima di iniziare, come se fosse stata usata al suo posto l'opzione -D.
-f
Prima di procedere, converte i nomi degli attributi in modo che questi siano scritti utilizzando solo lettere minuscole.
-l
-u
Con l'opzione -l si fa in modo che il contenuto degli attributi venga convertito in lettere minuscole, mentre con l'opzione -u si ottiene una conversione in maiuscole.
-s nome_vecchio=nome_nuovo\
  \[,nome_vecchio=nome_nuovo]...
Con questa opzione si può stabilire la sostituzione di alcuni nomi degli attributi della relazione. Ciò può essere particolarmente utile nel caso in cui i nomi originali siano incompatibili con PostgreSQL.
-s n_riga_iniziale
-e n_riga_finale
Le opzioni -s e -e permettono di definire l'intervallo di righe da trasferire, dove nel primo caso si indica la riga iniziale e nel secondo quella finale. Se non si indicano, il trasferimento parte dall'inizio e prosegue fino alla fine.

Segue la descrizione di alcuni esempi.


1) Dbview   GNU GPL

2) DBF2pg   software libero con licenza speciale

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net