
在mysql中导入/导出超大的sql文本文件,我们可以使用很多方法实例,如有:客户端直接命令 *** 作,分块导入,客户端用source命令 *** 作等等。
在实际工作中,有时经常地时行mysql数据库的导入和导入 *** 作,但对于大型sql文件导入时,phpmyadmin是不行的,有太多限制,比如记录,内存等!
多种方案收集,如下:
方案一:客户端直接命令 *** 作(此方法是我比较喜欢的)
刚恢复一个电商网站mysql备份数据,此备份文件有300多M,因为phpmyadmin支持上传有限,文件太大IE停止响应,所以在本地用
代码如下
复制代码
mysql -u root -p root jiahuibuydb<
c:/yebihaisql
但没导入进去,出来一大堆mysql的参数提示,不认输入的命令参数,后来写成下面这个样子,就是去掉了参数和数据之间的空格
代码如下
复制代码
mysql -uroot -proot jiahuibuydb<
c:/yebihaisql
导入就OK了
导出命令:
a)导出整个库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
代码如下
复制代码
mysqldump -u root -p student
>d:/yebihaisql
b)导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
方案二:分块导入
代码如下
复制代码
<
//用来快速Mysql的大数据备份
//使用前请首先按照代码注释修改要导入的SQL文件名、数据库主机名、数据库用户名、密码、数据库名
//同时将数据库文件和本文本一起ftp导网站目录,然后以web方式访问此文件即可
$file_name="sqlsql"; //要导入的SQL文件名
$dbhost="localhost"; //数据库主机名
$dbuser="user"; //数据库用户名
$dbpass="pass"; //数据库密码
$dbname="dbname";
//数据库名
set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe
mode模式下无效,此时可能会导致导入超时,此时需要分段导入
$fp = @fopen($file_name, "r") or
die("不能打开SQL文件 $file_name");//打开文件
mysql_connect($dbhost, $dbuser,
$dbpass) or die("不能连接数据库 $dbhost");//连接数据库
mysql_select_db($dbname)
or die ("不能打开数据库 $dbname");//打开数据库
mysql_query('set names utf8');
echo "正在执行导入 *** 作";
while($SQL=GetNextSQL()){
if
(!mysql_query($SQL)){
echo
"执行出错>
抄一段给你看看,应该有些帮助。
一般网站经常用phpmyadmin备份和恢复数据库,但默认总是限制了16M。网站数据一多就不行了。
解决方法如下:
(1)修改phpini适用自己有服务器的人
大多数都修改phpini中的upload_max_filesize,但修改了这个以后,还是提示这个问题;
那么更改如下几处:
修改 PHPini
file_uploads on 是否允许通过>
大型的数据库开发中常常遇到数据源是平面文件的情况 对于这样的数据源 无法使用数据库对其数据进行有效的管理 本文介绍几种常见的数据导入的方法 希望能够给读者以启迪 另外 本文所涉及到的数据库均为ORACLE数据库 其实对于其他数据库而言 方法类似 一 Sql:Loader 该方法是Oracle数据库下数据导入的最重要的方法之一 该工具由Oracle客户端提供 其基本工作原理是 首先要针对数据源文件制作一个控制文件 控制文件是用来解释如何对源文件进行解析 其中需要包含源文件的数据格式 目标数据库的字段等信息 一个典型的控制文件为如下形式 LOAD DATAINFILE /ora i/fengjie/agent/data/ipaagentdetail txt TRUNCATEINTO TABLE fj_ipa_agentdetailfields terminated trailing nullcols( AGENT_NO char AGENT_NAME char AGENT_ADDRESS char AGENT_LINKNUM char AGENT_LINKMAN char)其中 INFILE /ora i/fengjie/agent/data/ipaagentdetail txt 指明所要导入的源文件 其实源文件也可以直接通过命令行来输入获得 fj_ipa_agentdetail为目标表的名字 fields terminated 是指源文件的各个字段是以逗号分隔 trailing nullcols表示遇到空字段依然写入到数据库表中 最后这5个字段是目标数据库表的字段结构 通过上面这个典型的控制文件的格式分析可知 控制文件需要与源文件的格式信息一致 否则导入数据会出现异常 除了控制以外 sqlloader的还需要数据文件 即源文件 根据格式的不同 源文件可以分为固定字段长度和有分隔符这两大类 这里将分别说明这两种情况 固定字段长度的文本文件就是每个字段拥有固定的字段长度 比如 有分隔符的文本文件就是每个字段都有相同的分隔符分隔 比如 上海长途电信综合开发公司 南京东路 号 室 上海桦奇通讯科技有限公司 武宁路 号 室 上海邦正科技发展有限公司 南京东路 号 室对于上述两种文件格式sqlloader均可以做处理 下面就前面那个固定长度的文本来举例说明 由于该文本只有两个字段 一个为设备号 一个是区局编号 两者的长度分别为20和5 那么可以编制控制文件如下 LOAD DATAINFILE /ora i/fengjie/agent/data/ipaagent txt TRUNCATEINTO TABLE fj_ipa_agent( DEVNO POSITION( : ) CHAR BRANCH_NO POSITION( : ) CHAR)其中 /ora i/fengjie/agent/data/ipaagent txt 为该文件的完全路径 POSITION(M:N)表示该字段是从位置M到位置N 对于有分隔符的数据文件 前面已经有一个例子 这里就不再赘述了 总之 使用SqlLoader能够轻松将数据文件导入到数据库中 这种方法也是最常用的方法 二 使用专业的数据抽取工具 目前在数据仓库领域中 数据抽取与装载(ETL)是一重要的技术 这一技术对于一些大的数据文件或者文件数量较多尤其适合 这里简单介绍目前一款主流的数据抽取工具――Informatica 该工具主要采用图形界面进行编程 其主要工作流程是 首先将源数据文件的结构(格式)导入为Informatica里 然后根据业务规则对该结构进行一定的转换(transformation) 最终导入到目标表中 以上过程仅仅只是做了一个从源到目标的映射 数据的实际抽取与装载需要在工作流(workflow)里进行 使用专业的数据抽取工具 可以结合业务逻辑对多个源数据进行join union insect等 *** 作 适合于大型数据库和数据仓库 三 使用Access工具导入 可以直接在Access里选择 打开 文本文件 这样按照向导来导入一个文本文件到Access数据库中 然后使用编程的方法将其导入到最终的目标数据库中 这种方法虽然烦琐 但是其对系统的软件配置要求相对较低 所以也是有一定的使用范围 四 小结 总之 平面文件转化为数据库格式有利于数据的处理 显然 数据库强大的数据处理能力比直接进行文件I/O效率高出很多 希望本文能够对该领域做一个抛砖引玉的作用 lishixinzhi/Article/program/Oracle/201311/18530
在实际工作中,有时经常地时行mysql数据库的导入和导入 *** 作,但对于大型sql文件导入时,phpmyadmin是不行的,有太多限制,比如记录,内存等!
比较好的办法仍是用mysql的source命令:
一、在客户端下 *** 作:
1、进行入客户端
2、mysql>use 数据库名(如果没有,先建一个)
3、mysql>set names 'utf8'; (一般看导入的是什么格式的文件)
4、mysql>source d:\aaasql;
即可正常导入,如果有错,可以看出错提示
二、PHP文件 *** 作:
建立aphp
里面有下面内容
mysql_connet('xxxx');
mysql_query("set names 'utf8'");
mysql_query("source d:\aaasql'");
原理同上,主要方便了无法使用命令行用户的 *** 作
以上就是关于如何导入超大mysql数据库备份文件全部的内容,包括:如何导入超大mysql数据库备份文件、怎么快速导入一个超大的mysql文件、300兆的sql文件如何导入mysql数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)