如何用php将mysql表导出为dbf文件

如何用php将mysql表导出为dbf文件,第1张

<?

include_once("include.php")

$card=445//接收$card

//英文字段转中文字段

function field_conv($en,$card){

global $DbUseDatabase,$DbMHost,$DbMUser,$DbMPass

$db = new newquery($DbUseDatabase,$DbMHost,$DbMUser,$DbMPass)

$db->query("select fieldname from t_cardinfo where cardkind=$card and field ='$en'")

if($db->next_record()){

return $db->f(0)

}

else

return false

}

function mysql_to_dbf($mysql_datasource,$source_table,$destination_dbf)

{

global $DbUseDatabase,$DbMHost,$DbMUser,$DbMPass,$card

$link=mysql_connect($DbMHost,$DbMUser,$DbMPass) or exit("不能链接到数据库")

$operate=mysql_select_db($mysql_datasource,$link)

//连mysql数据源

$rs=mysql_query("SELECT * from ".$source_table." limit 0,1")

$number_of_fields=mysql_num_fields($rs)//取字段数量

//不要前面5个底层字段

for($field_counter=5$field_counter<$number_of_fields$field_counter++)

{

$dbf_field_type=mysql_field_type($rs,$field_counter)

$dbf_field_name=mysql_field_name($rs,$field_counter)

$dbf_field_len=mysql_field_len($rs,$field_counter)

//print($dbf_field_name)

if(isset($point)){

unset($point)

array_pop($field)

}

switch($dbf_field_type)

{

case "string":

$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10)

//自由表的字段名不能超过10,请注意

$dbf_field_len=mysql_field_len($rs,$field_counter)

if($dbf_field_len>=255)

{

$dbf_field_len--

}

$dbf_field_type="C"

break

case "varchar":

$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10)

//自由表的字段名不能超过10,请注意

$dbf_field_len=mysql_field_len($rs,$field_counter)

if($dbf_field_len>=255)

{

$dbf_field_len--

}

$dbf_field_type="C"

break

case "decimal":

$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10)

//自由表的字段名不能超过10,请注意

$dbf_field_len=mysql_field_len($rs,$field_counter)

if($dbf_field_len>=255)

{

$dbf_field_len--

}

$dbf_field_type="C"

break

case "real":

$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10)

//自由表的字段名不能超过10,请注意

$dbf_field_len=mysql_field_len($rs,$field_counter)

if($dbf_field_len>=255)

{

$dbf_field_len--

}

$dbf_field_type="N"

$dbf_field_len="10"

$point="0"

break

case "date":

$dbf_field_type="D"

break

}

$fieldname=field_conv($dbf_field_name,$card)

$fieldname=subcnstr($fieldname, 9, '')//字段最长10个字符

$field[0]=$fieldname

$field[1]=$dbf_field_type

$field[2]=$dbf_field_len

if(isset($point)) {

$field[3]=$point

}

$dbf[]=$field

}

$d = array_map(null, $dbf)

if (!dbase_create($destination_dbf,$dbf)){

print "<strong>Error!</strong>"

exit

}

//else

// print "<strong>ok!</strong>"

//写入字段名完成!

$dbfp=dbase_open ($destination_dbf,2)

$rs=mysql_query("SELECT * from ".$source_table)

$field=mysql_num_fields($rs)

while($row = mysql_fetch_array($rs))

{

$i=0

for($fieldcounter=5$fieldcounter<$field$fieldcounter++)//不要前面5个底层字段

{

$field_name=mysql_field_name($rs,$fieldcounter)

$rows[$i]=$row[$field_name]

$i++

}

dbase_add_record ($dbfp,$rows)//写入记录

}

//print_r($dbffield)

dbase_close($dbfp)

mysql_close($link)

}

mysql_to_dbf("nbw1-SY","t_cardcontent445","c:\a.dbf")

echo "<script>alert('导出完成!')</script>"

?>

导出要用到MySQL的mysqldump工具,基本用法是:

shell>mysqldump [OPTIONS] database [tables]

如果你不给定任何表,整个数据库将被导出。

通过执行mysqldump –help,你能得到你mysqldump的版本支持的选项表。

1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录

如我输入的命令行:cd F:Program FilesMySQLMySQL Server 5.1bin(mysql安装路径的bin文件夹)

2,导出数据库:mysqldump -u 用户名 -p 数据库名 >导出的文件名

如我输入的命令行:mysqldump -u root -p bolg>blog.sql(输入后会让你输入进入MySQL的密码)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7170983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存