โปรแกรมดู DBF สำหรับ Ubuntu


9

ฉันต้องเปิดไฟล์ dbf บน Ubuntu 15 ของฉันและฉันพบว่า LibreOffice สามารถทำได้ แต่ฉันได้รับ

ข้อผิดพลาดทั่วไป ข้อผิดพลาดอินพุต / เอาต์พุตทั่วไป

มีเครื่องมือใด ๆ หรือมีซอฟต์แวร์เครื่องมือในตัวที่สามารถช่วยฉันได้ไหม


เราไม่สนใจว่าจะเปิดใน Windows
Rinzwind

1
@Rinzwind ใช่แล้วและนั่นจะทำให้ฉันตอบคำถามเช่น "คุณพยายามเปิดในระบบ / ซอฟต์แวร์อื่นหรือไม่?"
ดาเรีย

แม้ว่าจะเป็นคำถามที่ถูกต้อง แต่ก็เป็นUbuntuเท่านั้น และเราไม่คาดหวังให้ผู้ใช้ติดตั้ง Windows ;-)
Rinzwind

4
@Rinzwind จริง ๆ แล้วมันแสดงให้เห็นว่าไฟล์นั้นถูกต้อง (น่าจะ)
คธูลู

คำตอบ:


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):

sudo apt-get install dbview

อ้างถึงmanpagedbviewสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ


2
ที่ดี! ฉันเดาว่าฉันไม่มี LibreOffice Base และนำมาติดตั้งใหม่) นอกจากนี้ dbview ยังเป็นคอนโซลที่ดี (เพราะฉันเข้าใจถูกต้อง) แอพที่สามารถสร้างไฟล์ dbf ดูตัวอย่างได้อย่างง่ายดาย ขอบคุณ.
ดาเรีย

3
เนื่องจาก LibreOffice Base ไม่ได้ติดตั้งตามค่าเริ่มต้นใน Ubuntu คุณอาจต้องเริ่มต้นด้วยการตรวจสอบว่าเป็นจริงหรือไม่
leo

3

สำหรับการแก้ไขไฟล์. 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


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";
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.