您的位置:首页 > 数据库 > MySQL

从MySQL导入导出大量数据的程序实现方法

2008-05-01 02:11 916 查看
.Gwc245{display:none;}

导出:用phpmyadmin保存数据库/表格结构,用脚本读取数据库内容并保存到文件里面!
导入:用phpmyadmin恢复数据库/表格结构,用脚本读取文件,然后保存到库里面!
导出程序如下:调用方法为****.php?table=tablename
这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!
<?
if($table==/"/")exit();
MySQL_connect(/"localhost/",/"name/",/"password/");
MySQL_select_db(/"database/");
$result=MySQL_query(/"select*from$table/");
if(MySQL_num_rows($result)<=0)exit();
echo/"开始转换数据到文本...
/";
$handle=fopen(/"$table.txt/",/"w/");
$numfields=MySQL_num_fields($result);
fputs($handle,$numfields./"/r/n/");
for($k=0;$k<MySQL_num_rows($result);$k++)
{
$msg=MySQL_fetch_row($result);
for($i=0;$i<$numfields;$i++)
{
$msg[$i]=str_replace(/"/r/n/",/"&&php2000MySQLreturn&&/",$msg[$i]);
$msg[$i]=str_replace(/"/n/",/"&&php2000MySQLreturn&&/",$msg[$i]);
fputs($handle,$msg[$i]./"/r/n/");
}
fputs($handle,/"-------php2000dumpdataprogramV1.0forMySQL--------/r/n/");
}
fclose($handle);
echo/"ok/";
?>

<?
if($table==/"/")exit();
MySQL_connect(/"localhost/",/"name/",/"password/");
MySQL_select_db(/"database/");
$message=file(/"$table.txt/");
echo$numfields=chop($message[0]);
for($k=1;$k<count($message);$k+=($numfields+1))
{
$value=/"/";
for($i=$k;$i<($k+$numfields-1);$i++)
{
$tmp=str_replace(/"&&php2000MySQLreturn&&/",/"/r/n/",chop($message[$i]));
$value.=/"/'/".addslashes($tmp)./"/',/";
}
$tmp=str_replace(/"&&php2000MySQLreturn&&/",/"/r/n/",chop($message[$k+$numfields-1]));
$value.=/"/'/".$tmp./"/'/";
$query=/"insertinto$tablevalues(/".$value./")/";
echoMySQL_error();
MySQL_query($query);
echo$k./"/";
}
echo/"ok/";
?>
使用方法和可能的问题!
1导入时file()函数可能会有问题(我的10M的数据没出现问题),可以改为fopen()然后没次读一行!!
2导入,导出都需要用ftp操作,也就是导出后,用ftp把数据转到本机,导入时先用ftp转移数据到服务器!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: