用于将.DBF文件转换为.MYSQL的PHP​​脚本

只是想知道是否有人可以指向一些提示/脚本的方向,这将帮助我使用PHP从原始dbf文件创建一个MysqL.

谢谢你.

最佳答案
您可以尝试以下代码

PHP
$tbl = "cc";
$db_uname = 'root';
$db_passwd = '';
$db = 'aa';
$conn = MysqL_pconnect('localhost',$db_uname,$db_passwd);

// Path to dbase file
$db_path = "dbffile/bbsres12.dbf";

// Open dbase file
$dbh = dbase_open($db_path,0)
or die("Error! Could not open dbase database file '$db_path'.");

// Get column information
$column_info = dbase_get_header_info($dbh);

// display information
//print_r($column_info);

$line = array();

foreach($column_info as $col)
{
switch($col['type'])
{
case 'character':
$line[]= "`$col[name]` VARCHAR( $col[length] )";
break;
case 'number':
$line[]= "`$col[name]` FLOAT";
break;
case 'boolean':
$line[]= "`$col[name]` BOOL";
break;
case 'date':
$line[]= "`$col[name]` DATE";
break;
case 'memo':
$line[]= "`$col[name]` TEXT";
break;
}
}
$str = implode(",",$line);
$sql = "CREATE TABLE `$tbl` ( $str );";

MysqL_select_db($db,$conn);

MysqL_query($sql,$conn);
set_time_limit(0); // I added unlimited time limit here,because the records I imported were in the hundreds of thousands.

// This is part 2 of the code

import_dbf($db,$tbl,$db_path);

function import_dbf($db,$table,$dbf_file)
{
global $conn;
if (!$dbf = dbase_open ($dbf_file,0)){ die("Could not open $dbf_file for import."); }
$num_rec = dbase_numrecords($dbf);
$num_fields = dbase_numfields($dbf);
$fields = array();

for ($i=1; $i<=$num_rec; $i++){
$row = @dbase_get_record_with_names($dbf,$i);
$q = "insert into $db.$table values (";
foreach ($row as $key => $val){
if ($key == 'deleted'){ continue; }
$q .= "'" . addslashes(trim($val)) . "',"; // Code modified to trim out whitespaces
}
if (isset($extra_col_val)){ $q .= "'$extra_col_val',"; }
$q = substr($q,-1);
$q .= ')';
//if the query Failed - go ahead and print a bunch of debug info
if (!$result = MysqL_query($q,$conn)){
print (MysqL_error() . " sql: $q
\n");
print (substr_count($q,',') + 1) . " Fields total.

";
$problem_q = explode(',$q);
$q1 = "desc $db.$table";
$result1 = MysqL_query($q1,$conn);
$columns = array();
$i = 1;
while ($row1 = MysqL_fetch_assoc($result1)){
$columns[$i] = $row1['Field'];
$i++;
}
$i = 1;
foreach ($problem_q as $pq){
print "$i column: {$columns[$i]} data: $pq
\n";
$i++;
}
die();
}
}
}


?>

相关文章

目录MySQL卸载环境查看是否已安装MySQL卸载mysql服务查看是否...
目录数据类型数据类型分类数值类型以TINYINT认识整型族有符号...
目录表的约束空属性非空约束(NOT NULL Constraint)默认值定...
目录函数时间日期函数:字符串函数数学函数其他函数 函数 时间...
目录使用C语言连接库的安装C APImysql_initmysql_real_conne...
目录用户用户管理查询所有用户查看当前用户查看当前连接数创...