Просмотрщиков DBF не так много, один из вариантов это открыть в Openoffice (Libreoffice) Calc но это не всегда получается. Другой вариант использовать специальные программы. Особенно проблемно это с Linux систем. Один из вариантов — это конвертировать в CSV. Один из способов это сделать с помощью PHP.
Конвертирование
<?php
set_time_limit( 24192000 );
ini_set( 'memory_limit', '-1' );
$files = glob( '/path/to/*.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 );
}
тут /path/to/
необходимо заменить на свой путь
либо 5 строку заменить на код
$path = $argv[1] ?? null;
if (empty($path) || !file_exists($path)) {
throw new Exception("file path not found", 1);
}
if (is_dir($path)) {
$files = glob( '*.DBF' );
} else {
$files = [$path];
}
тогда можно запускать из консоли. В качестве параметра можно указывать как конкретный файл, так и папку. Результат преобразования окажется рядом со скриптом.
php convert.php ../MYFILE.DBF
Зависимости
для конвертирования используется модуль dbase
можно установить через pecl
sudo pecl install dbase
# установить pecl если не установлен
sudo apt install php-dev