乐观 发表于 2015-1-16 22:24:38

MYSQL教程之导进导出大批数据程序完成办法

任何规模的组织都可能受益于外包服务,并在一个标准化和优化的平台上统一其数据库管理任务。基于其本身的特性,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);
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倍。

仓酷云 发表于 2015-1-19 11:00:22

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

冷月葬花魂 发表于 2015-1-26 23:30:04

还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。

山那边是海 发表于 2015-2-5 00:32:30

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。

变相怪杰 发表于 2015-2-11 00:15:29

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

谁可相欹 发表于 2015-3-1 18:51:57

无法深入到数据库系统层面去了解和探究

愤怒的大鸟 发表于 2015-3-17 11:10:34

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

灵魂腐蚀 发表于 2015-3-24 08:43:57

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
页: [1]
查看完整版本: MYSQL教程之导进导出大批数据程序完成办法