Мне нужно открыть файлы dbf на моем Ubuntu 15, и, как я обнаружил, LibreOffice может это сделать. Но я получаю
Общая ошибка. Общая ошибка ввода / вывода.
Есть ЛЮБОЙ инструмент или встроенный программный инструмент, который может мне помочь?
Мне нужно открыть файлы dbf на моем Ubuntu 15, и, как я обнаружил, LibreOffice может это сделать. Но я получаю
Общая ошибка. Общая ошибка ввода / вывода.
Есть ЛЮБОЙ инструмент или встроенный программный инструмент, который может мне помочь?
Ответы:
Согласно LibreOffice Wiki, вы сможете открывать .dbf
файлы с помощью LibreOffice Base.
Если вы все еще сталкиваетесь с этой проблемой, переустановите LibreOffice:
sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get install libreoffice
Вы также можете использовать dbview
для открытия .dbf
файлов (которые могут быть сложнее, чем LibreOffice Base):
sudo apt-get install dbview
Обратитесь к странице справки для получения дополнительной информации dbview
.
Для очень простого редактирования небольших файлов .dbf вы также можете использовать GTK DBF Editor.
Чтобы установить его в Ubuntu 12.04, мне сначала нужно было установить эту зависимость:
sudo apt-get install libglade2-0:i386
Затем я могу установить скачанный файл .deb с
sudo dpkg -i Downloads/gtkdbfeditor_1.0.4-7_i386.deb
Обновить:
В Ubuntu 16.04 с установкой по умолчанию LibreOffice мне также пришлось
sudo apt install libreoffice-base
Затем файлы .dbf можно открыть в LibreOffice Calc, а также сохранить как .dbf.
Я обнаружил, что лучший способ иметь дело с файлами .dbf - это использовать PHP для преобразования их в файлы .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 );
}
?>
Затем используйте MySQL для импорта CSV:
LOAD DATA INFILE "/media/d/Data2/files/ZACATECAS.csv" INTO TABLE tbl FIELDS TERMINATED BY ";" ENCLOSED BY '"' LINES TERMINATED BY "\n";