Я нашел простой способ извлечь данные из .dbf с помощью библиотеки perl XBASE Используя эту библиотеку, я написал небольшие скрипты, которые читают данный файл и выводят строку json.
# foxpro2json.pl
use File::Basename;
use XBase;
$filename=$ARGV[0];
my $table = new XBase $filename or die XBase->errstr;
my @fields = $table->field_names;
my $cursor = $table->prepare_select();
my $return = '';
my $i = 0;
while (my @row = $cursor->fetch) {
$json = '{';
$i = 0;
foreach $val (@row) {
$val =~ s/(['"\/\\])/\\$1/g;
$json .= '"'.$fields[$i].'":"'.$val.'",';
$i++;
}
$json = substr($json, 0, -1);
$json .= '},';
$return .= $json;
}
$return = substr($return, 0, -1);
print '['.$return.']';
Вот как я называю этот файл внутри моего php-кода:
exec('/usr/bin/perl /var/www/foxpro2json.pl /var/www/myfilename.dbf', $json);
$array = json_decode($json[0], true);