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

小熙潮屋总仓

小熙潮屋总仓

2016-01-29 13:55

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

大家一定使用过 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."rn");
for($k=0;$k< mysql_num_rows($result);$k )
{
$msg = mysql_fetch_row($result);
for($i=0;$i< $numfields;$i )
{
$msg[$i] = str_replace("rn","&&php2000mysqlreturn&&",$msg[$i]);
$msg[$i] = str_replace("n" ,"&&php2000mysqlreturn&&",$msg[$i]);
fputs($handle,$msg[$i]."rn");
}
fputs($handle,"------- php2000 dump data program V1.0 for MySQL --------rn");
}
fclose($handle);
echo "ok";
?

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)
导入的程序如下:用法同上面!

< ?
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&&","rn",chop($message[$i]));
$value .= "'".addslashes($tmp)."',";
}
$tmp = str_replace("&&php2000mysqlreturn&&","rn",chop($message[$k $numfields-1]));
$value .= "'".$tmp."'";
$query = "insert into $table values (".$value.")";
echo mysql_error();
mysql_query($query);
echo $k." ";
}
echo "ok";
?

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)
使用方法和可能的问题!
1 导入时 file()函数可能会有问题(我的10M的数据没出现问题),可以改为 fopen()然后没次读一行!!
2 导入,导出都需要用 ftp 操作,也就是导出后,用 ftp 把数据转到本机,导入时先用ftp转移数据到服务器!

展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL数据导入导出方法与工具mysqlimport

编程语言 网络编程
MySQL数据导入导出方法与工具mysqlimport

MySQL数据导入导出方法与工具介绍

MySQL mysql数据库
MySQL数据导入导出方法与工具介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Mysql 数据库的导入与导出

MySQL mysql数据库
Mysql 数据库的导入与导出

MySQL大数据量导入导出方法比较

编程语言 网络编程
MySQL大数据量导入导出方法比较

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C#抢鲜快报之FAQ20

C#抢鲜快报之FAQ20

一个用c#写的扫描asp源码漏洞的应用程序(续)

一个用c#写的扫描asp源码漏洞的应用程序(续)
下拉加载更多内容 ↓