Devo aprire i file dbf sul mio Ubuntu 15 e come ho scoperto LibreOffice può farlo. Ma sto arrivando
Errore generale. Errore generale di input / output.
Esiste QUALSIASI strumento o strumento software incorporato che mi può aiutare?
Devo aprire i file dbf sul mio Ubuntu 15 e come ho scoperto LibreOffice può farlo. Ma sto arrivando
Errore generale. Errore generale di input / output.
Esiste QUALSIASI strumento o strumento software incorporato che mi può aiutare?
Risposte:
Secondo il Wiki di LibreOffice dovresti essere in grado di aprire i .dbffile con LibreOffice Base.
Se il problema persiste, reinstallare LibreOffice:
sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get install libreoffice
Puoi anche usare dbviewper aprire i .dbffile (che potrebbe essere più difficile da usare rispetto a LibreOffice Base):
sudo apt-get install dbview
Fare riferimento alla manpage per ulteriori informazioni su dbview.
Per la modifica molto semplice di piccoli file .dbf, puoi anche utilizzare GTK DBF Editor
Per installarlo in Ubuntu 12.04, ho prima bisogno di installare questa dipendenza:
sudo apt-get install libglade2-0:i386
Quindi ho potuto installare il file .deb scaricato con
sudo dpkg -i Downloads/gtkdbfeditor_1.0.4-7_i386.deb
Aggiornare:
In Ubuntu 16.04, con l'installazione predefinita di LibreOffice, ho dovuto farlo anch'io
sudo apt install libreoffice-base
Quindi, i file .dbf possono essere aperti in LibreOffice Calc e salvati anche come .dbf.
Ho trovato il modo migliore per gestire i file .dbf è usare PHP per convertirli in file .csv:
<?php
set_time_limit( 24192000 );
ini_set( 'memory_limit', '-1' );
$files = glob( '/media/d/Data2/files/*.DBF' );
foreach( $files as $file )
{
echo "Processing: $file\n";
$fileParts = explode( '/', $file );
$endPart = $fileParts[key( array_slice( $fileParts, -1, 1, true ) )];
$csvFile = preg_replace( '~\.[a-z]+$~i', '.csv', $endPart );
if( !$dbf = dbase_open( $file, 0 ) ) die( "Could not connect to: $file" );
$num_rec = dbase_numrecords( $dbf );
$num_fields = dbase_numfields( $dbf );
$fields = array();
$out = '';
for( $i = 1; $i <= $num_rec; $i++ )
{
$row = @dbase_get_record_with_names( $dbf, $i );
$firstKey = key( array_slice( $row, 0, 1, true ) );
foreach( $row as $key => $val )
{
if( $key == 'deleted' ) continue;
if( $firstKey != $key ) $out .= ';';
$out .= trim( $val );
}
$out .= "\n";
}
file_put_contents( $csvFile, $out );
}
?>
Quindi utilizzare MySQL per importare il CSV:
LOAD DATA INFILE "/media/d/Data2/files/ZACATECAS.csv" INTO TABLE tbl FIELDS TERMINATED BY ";" ENCLOSED BY '"' LINES TERMINATED BY "\n";