Tôi cần mở các tệp dbf trên Ubuntu 15 của mình và như tôi thấy LibreOffice có thể làm điều này. Nhưng tôi đang nhận được
Lỗi chung. Lỗi đầu vào / đầu ra chung.
Có công cụ nào hoặc tích hợp một số công cụ phần mềm có thể giúp tôi không?
Tôi cần mở các tệp dbf trên Ubuntu 15 của mình và như tôi thấy LibreOffice có thể làm điều này. Nhưng tôi đang nhận được
Lỗi chung. Lỗi đầu vào / đầu ra chung.
Có công cụ nào hoặc tích hợp một số công cụ phần mềm có thể giúp tôi không?
Câu trả lời:
Theo Wiki của LibreOffice, bạn sẽ có thể mở .dbfcác tệp với LibreOffice Base.
Nếu bạn vẫn gặp phải sự cố này, hãy cài đặt lại LibreOffice:
sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get install libreoffice
Bạn cũng có thể sử dụng dbviewđể mở .dbfcác tệp (có thể khó sử dụng hơn LibreOffice Base):
sudo apt-get install dbview
Tham khảo trang hướng dẫn để biết thêm thông tin về dbview.
Để chỉnh sửa các tệp .dbf nhỏ rất đơn giản, bạn cũng có thể sử dụng GTK DBF Editor
Để cài đặt nó trong Ubuntu 12.04, trước tiên tôi cần cài đặt phần phụ thuộc này:
sudo apt-get install libglade2-0:i386
Sau đó tôi có thể cài đặt tệp .deb đã tải xuống bằng
sudo dpkg -i Downloads/gtkdbfeditor_1.0.4-7_i386.deb
Cập nhật:
Trong Ubuntu 16.04, với cài đặt mặc định của LibreOffice, tôi cũng phải
sudo apt install libreoffice-base
Sau đó, các tệp .dbf có thể được mở trong LibreScript Calc và cũng được lưu dưới dạng .dbf.
Tôi đã tìm ra cách tốt nhất để xử lý các tệp .dbf là sử dụng PHP để chuyển đổi chúng thành các tệp .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 );
}
?>
Sau đó sử dụng MySQL để nhập CSV:
LOAD DATA INFILE "/media/d/Data2/files/ZACATECAS.csv" INTO TABLE tbl FIELDS TERMINATED BY ";" ENCLOSED BY '"' LINES TERMINATED BY "\n";