El utilitario dbfdump, parte del módulo de Perl "XBase" permite volcar una tabla .dbf por línea de comandos.

El formato de archivo DBF (Data Base File) es utilizado por el motor de bases de datos dBase para almacenar sus tablas y bases de datos. Este formato fue típicamente utilizado por el gestor de bases de datos Visual FoxPro (el cual lamentablemente sigue siendo utilizado por muchos sistemas en producción en la actualidad) y múltiples implementaciones de XBase, entre las que se destaca Harbour, una implementación de dBase free/open source y multiplataforma (incluyendo a las plataformas Mac, Linux, BSD y otras).



Desde un sistema GNU/Linux es posible volcar una tabla DBF gracias al utilitario dbfdump. Este utilitario imprime por salida estándar el contenido de un archivo .dbf indicado como parámetro. Por defecto se imprimen todos los campos de la tabla separados por dos puntos, de a un registro por línea:

root@slackware:~# dbfdump li00000000.dbf 
0103:FUNDIBIELA AUTOMOTORES:SAN MARTIN:  129::: 621:70:000002906976:70:0005:
0103:LARRY PLOTTER:SARMIENTO:   50::: 652:75:000002984363:75:0005:
0103:ASADERO MI POLLAZO:ALEM:  171::: 659:150:000003023042:150:0005:
0103:ASADERO MI POLLAZO:ALEM:  171::: 660:126:000003025931:126:0005:
0103:ASADERO MI POLLAZO:ALEM:  171::: 661:112:000003029007:112:0005:
0103:CHURRASIC PARK:MORENO:  609::: 689:290:000003116583:290:0005:
0103:CHURRASIC PARK:MORENO:  609::: 696:290:000003129602:290:0005:
0103:CHURRASIC PARK:MORENO:  609::: 697:290:000003138981:290:0005:

dbfdump es provisto por el módulo de Perl XBase incluido en la distribución DBD::XBase. Esta distribución también ofrece un driver DBI que provee una interfaz SQL.

Como todo módulo de Perl, es posible instalar "XBase" desde el archivo de software Perl CPAN:

# cpan -i DBD::XBase

La opción --info permite describir la estructura de la tabla DBF (similar al comando \d de Postgres):

root@slackware:~# dbfdump --info li00000000.dbf 
Filename:       li00000000.dbf
Version:        0x03 (ver. 3)
Num of records: 12
Header length:  418
Record length:  175
Last change:    2017/11/14
Num fields:     12
Field info:
Num     Name            Type    Len     Decimal
1.      COBRADOR        C       4       0
2.      NOMBRE          C       25      0
3.      DIRECCION       C       40      0
4.      NUMERO          C       5       0
5.      PISO            C       4       0
6.      DPTO            C       4       0
7.      EJEMPLAR        C       14      0
8.      TOTAL           N       10      2
9.      INTERNO         C       12      0
10.     SALDO           N       12      2
11.     VENDEDOR        C       4       0
12.     COMENTARIO      C       40      0

Una opción interesante es --fields, la cual permite seleccionar qué campos mostrar indicando los nombres de los mismos como parámetro (según aparecen en la salida de --info en la columna "Name"):

root@slackware:~# dbfdump --fields cobrador,nombre li00000000.dbf 
0103:FUNDIBIELA AUTOMOTORES
0103:LARRY PLOTTER
0103:ASADERO MI POLLAZO
0103:ASADERO MI POLLAZO
0103:ASADERO MI POLLAZO
0103:CHURRASIC PARK
0103:CHURRASIC PARK
0103:CHURRASIC PARK

Notar que el orden de los campos en la salida se puede alterar de acuerdo al orden de los parámetros de la opción --fields, lo cual puede ser de gran utilidad al momento de desarrollar scripts de conversión o reporte:

root@slackware:~# dbfdump --fields nombre,cobrador li00000000.dbf 
FUNDIBIELA AUTOMOTORES:0103
LARRY PLOTTER:0103
ASADERO MI POLLAZO:0103
ASADERO MI POLLAZO:0103
ASADERO MI POLLAZO:0103
CHURRASIC PARK:0103
CHURRASIC PARK:0103
CHURRASIC PARK:0103


Tal vez pueda interesarte


Compartí este artículo y dejá tu comentario