适用于Ubuntu的DBF查看器


9

我需要在Ubuntu 15上打开dbf文件,因为我发现LibreOffice可以做到这一点。但是我越来越

一般错误。一般输入/输出错误。

是否有任何工具或内置的某些软件工具可以帮助我?


我们不在乎它是否在Windows上打开。
Rinzwind

1
@Rinzwind是的,那会让我回答诸如“您是否尝试在其他系统/软件中打开它?”之类的问题。
Daria

即使这是一个有效的问题,也只能是Ubuntu。而且我们不希望用户安装Windows ;-)
Rinzwind,2015年

4
@Rinzwind它实际上表明该文件有效(可能)。
克苏鲁2015年

Answers:


13

根据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


2
大!我想我没有LibreOffice Base并需要重新安装才能实现)dbview是一个很好的控制台(如我所知)应用程序,可以轻松地预览dbf文件。谢谢。
Daria

3
由于默认情况下未在Ubuntu中安装LibreOffice Base,因此您可能需要先检查它是否实际安装。
leo

3

对于小.dbf文件的非常简单的编辑,您还可以使用GTK DBF编辑器

要在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

然后,可以在LibreOffice Calc中打开.dbf文件,也可以将其另存为.dbf。


2

我发现处理.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";
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.