|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
任何规模的组织都可能受益于外包服务,并在一个标准化和优化的平台上统一其数据库管理任务。基于其本身的特性,DBaaS提供了敏捷和高效的数据库服务,它可以支持多变的需求。人人必定利用过phpmyadmin内里的数据库导进,导出功效,十分便利。可是在实践使用中,我发明以下几个成绩:
1数据库凌驾必定尺寸,好比6M这时候利用导出一样平常没成绩,能够准确的保留到本机硬盘下面,可是导进则不可!缘故原由是:一样平常的PHP.INI内里设置一时文件/上传文件的巨细限定为2M,而phpmyadmin利用了上传的体例,形成失利。 2导出到硬盘的.SQL文件在导回时,常常呈现因为某些单引号的成绩引发失利,形成导进失利,只能用mysql等使用程序导进了。我的数据库已凌驾10M,以是必需办理这个成绩。我的思绪:
导出:用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."
");
for($k=0;$k<mysql_num_rows($result);$k++)
{
$msg=mysql_fetch_row($result);
for($i=0;$i<$numfields;$i++)
{
$msg[$i]=str_replace("
","&&php2000mysqlreturn&&",$msg[$i]);
$msg[$i]=str_replace("
","&&php2000mysqlreturn&&",$msg[$i]);
fputs($handle,$msg[$i]."
");
}
fputs($handle,"-------php2000dumpdataprogramV1.0forMySQL--------
");
}
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&&","
",chop($message[$i]));
$value.="".addslashes($tmp).",";
}
$tmp=str_replace("&&php2000mysqlreturn&&","
",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转移数据到服务器!如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 |
|