当前位置:多学网学习教育电脑学习编程入门PHP教程超大mysql数据库导入的办法

超大mysql数据库导入的办法

[08-23 22:08:54]   来源:http://www.duoxue8.com  PHP教程   阅读:844
超大mysql数据库导入的办法,标签:PHP技巧,php培训,php学习,php安装,http://www.duoxue8.com

用 phpmyadmin 里面的数据库导入导出功能,非常方便。但是在实际应用中,有如下几个问题:

1、数据库超过一定尺寸,比如3M 这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的 php.ini 里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。

2、导出到硬盘的 .SQL 文件在导回时,经常出现由于某些单引号的问题引起失败,只能用 mysql等第三方应用程序导入了。

当你的数据库文件大小超过2M就必须考虑这个问题了,我的解决思路如下:

虚拟空间用户:

1、首选方法是让空间商帮你导入进去,因为他可以修改phpmyadmin上传文件大小限制。

2、其次是彻底的脱离phpmyadmin用第三方备份软件。比如使用:FaisunSQL,它的优点是大型数据备份分卷导出为php文件,可以直接通过url访问其中一个即全部导入。(只是因为wp自动备份文件是.sql的所以我没用这个方法。不过手动备份的时候的确是不错的选择。)

3、没有权限创造权限,自己在ftp上上传一套phpmyadmin程序,创建upload目录,将备份的.sql数据库文件上传到upload里,然后通过你自己上传的phpmyadmin来读取导入!

本机搭建php+mysql环境用户:

如果你只是希望本机搭建php+mysql环境的话,修改phpmyadmin上传文件的2M限制就可以了。

一、具体操作如下:

1,修改c:windowsphp.ini文件()找到post_max_size(通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M),upload_max_filesize(允许上传文件大小的最大值。默认为2M),max_execution_time(每个PHP页面运行的最大时间值(秒),默认30秒),max_input_time(每个PHP页面接收数据所需的最大时间,默认60 秒),memory_limit(每个PHP页面所吃掉的最大内存,默认8M)分别修改大小限制,最简单的就是补一个0。这样重启apache 后,phpMyAdmin的恢复界面还是显示限制2MB,网上有教程说其实是可以上传的。

2,个人还是建议修改一下c:phpmyadminimport.php文件,查找$memory_limit,默认为$memory_limit = 2 * 1024 * 1024;改为20* 1024 * 1024;即可使得phpMyAdmin后台恢复界面限制由2MB变成20MB

二,再谈谈Mysql乱码的问题:

Mysql乱码问题源于MySQL 4.1对多语言的支持有了很大变化,MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式也即校对规则(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。Mysql4.1以上本版默认字符集是 latin1,而且默认校对规则(Collation)是latin1_swedish_ci。

修改mysql的默认字符集,在mysql配置文档my.ini 找到default-character-set=latin1,建议不修改,因为启动mysql时,character_set_server 被设定为这个默认的字符集; 当创建一个新的数据库时,这个数据库的字符集被缺省设定为 character_set_server;在这个数据库里创建一张表时,表默认的字符集被设定为这个数据库默认的字符集; 当在表内设置一字段时,此字段栏缺省的字符集就是表默认的字符集。

所以在建立数据库,数据库表,数据库表字段的过程中可以自定义字符集,中国用户一般情况下也就使用gb2312,gbk,utf8这三种。建议在新建数据库时就直接指定字符集,如CREATE DATABASE `litao_biz` DEFAULT CHARACTER SET utf8 COLLATE uft8_general_ci;这句话设置了数据库litao_biz的字符集是utf8,同时MySQL 连接校对被设置为uft8_general_ci。再新建的数据库表的连接校对规则也默认继承uft8_general_ci,phpMyAdmin中将不会再显示latin1_swedish_ci;。

数据库字符集,连接校对规则设定后,在PHP文件中访问Mysql数据库是需要指定连接字符编码

$conn = mysql_connect("localhost","root",""); 
mysql_query("set names ‘utf8′");//这就是指定数据库字符集,一般放在连接数据库后面就系了 
mysql_select_db("litao_biz"); 

如果我们将mysql_query("set names ‘gbk’");注释掉,肯定时乱码。你数据库用什么编码,在对数据库操作之前就set names ‘你的编码’; 

有了以上建立数据库的经验,在将低版本的Mysql数据库转移到高版本Mysql数据库时,李涛建议一般先在低版本Mysql管理界面phpMyAdmin中搞清楚其字符集(gbk,utf8,gb2312),连接校对规则(utf8_general_ci,gbk_chinese_ci,latin1_swedish_ci等),直接备份数据库中的数据表即可(不要备份整个数据库)然后在高版本的Mysql管理界面phpMyAdmin中新建相应字符集和连接校对规则的数据库(具体MySQL 字符集: UTF-8 Unicode (utf8),MySQL 连接校对utf8_general_ci,litao_biz将整理选择为utf8_general_ci即可),进入import导入界面,注意一个选项Format of imported file—–SQL compatibility mode—-NONE,将NONE改为MYSQL40或者其他,执行。这样就成功的将低版本的Mysql数据库4.1转移到高版本Mysql数据库 5.0。


 




超大mysql数据库导入的办法 结束。
Tag:PHP教程PHP技巧,php培训,php学习,php安装电脑学习 - 编程入门 - PHP教程