导入超大SQL文件以及Windows-Linux远程互传文件

想起前两天的事,简直是一场与时间赛跑的游戏:公司一个项目换了服务器,但是数据库没了(我的天呐!),还好之前备份的有,我需要把对应的数据库装上.但是这个备份 的SQL文件是公司目前所有项目的数据库大合集,有20多个G,需要的那个数据库,大概1.4M ^_^.此时此刻下午三点十分,离下班还有两个多小时…

按照正常的思维,拿到SQL文件后,将它随便导入到SQL数据库中,然后挑出需要的那个库,放置相应的地方,Over!

接下来,发生的一切,可能决定我今天能不能按时下班.首先,肯定不能往服务器上导,空间不够用,就只能到在本地,WAMP环境,打开phpMyAdmin,上传,将近10分钟了还是0%,慢就慢吧,还有时间.可是,总是在出现1%的 时候报错,各种error,果断换种方式,用Navicat,把文件拖上去,一会显示剩余时间,32小时…我的天呐,这可让我怎么办!关键是,还报错!!

无奈之下,只能求助网络,答案还是比较统一的,都是说要修改数据库配置,改就改吧,修改如下:

导入超大SQL修改数据库配置

找到php.ini文件,修改这三个参数:

 max_execution_time = 0  //没有时间限制,使用完成后改成实数
 max_input_time =     -1  //接收数据的时间限制
 upload_max_filesize = 20480M 
 memory_limit = 20480M 
 post_max_size= 20480M 

解决执行时间错误 D:\wamp\apps\phpmyadmin4.5.5.1下找到config.inc.php这个文件,查找$cfg[‘ExecTimeLimit’] = 300; 把300改为0就是不限制时间.

$cfg['ExecTimeLimit'] = 0

到这里,报错的问题基本解决,如果还是报错,例如出现” unknown command ‘\n’ Can’t connect to the server”很可能是字符集的问题,修改字符集,在CMD命令行输入以下命令:

Mysql -u root -p --default-character-set=utf8 database <backpath

报错问题解决了,但是导入时间30多个小时,这怎么办,有一种办法,在MYSQL控制台(CMD下登录MYSQL)用source命令,可以高效导入,这条命令拯救了我,操作如下:

mysql> source D:/www/sql/back.sql;

两个小时后,文件成功导入,开心!!!接下来,只需要找出项目所需要的数据库,上传到服务器就行了!

pscp命令的使用

习惯了使用命令行进行高效操作,真的不想再用GUI软件了,下面再介绍一个工具,pscp.exe,Linux服务器导出文件到Windows本地,和Windows本地上传到Linux,首先下载pscp.exe, 进入下载页面,下载后,将pscp.exe的路径加入到系统环境变量Path中.

Linux导出到Windows: xxx代表服务器IP地址和要导出的文件名,后面一段代表导出到Windows的什么地方

pscp root@xx.xx.xx.xxx:/www/web/xxx.zip C:\Users\wangliang\Desktop

Windows导入到Linux 将pub.zip导入Linux

pscp D:\pub.zip root@xx.xx.xx.xxx:/www/web/aaa

至于为什么不用WinSCP直接拖拽,前面说了,不想用GUI工具了,高效才是硬道理.

发表评论

发表评论

沙发空缺中,还不快抢~