用SQL语句解决mysql导入大数据文件的问题

416 查看

对于经常使用MYSQL的人来说,phpmyadmin是一个必备的工具。这个工具非常强大,几乎可以完成所有的数据库操作,但是它也有一个弱点,对于往远程服务器上导入较大的数据文件的时候会速度奇慢,甚至出现长期没有响应的情况。

为什么会出现这样的情况呢?当我们选择一个sql数据文件并提交的时候,服务器首先要先把文件上传到服务器,然后才会执行导入代码把数据导入到数据库。我们知道phpmyadmin是通过web方式上传的数据文件,而web方式上传是很不稳定的,尤其是网速慢的时候,这就是为什么我们会有那么多次在电脑前面苦苦等待而最终却没有结果的原因。

通过上面的分析,我们知道这个问题是出在web上传而非导入程序,所以如果能避免通过web上传这个问题就好办了。我们可能会想到那功能强大的ftp上传工具,可是phpmyadmin无法选择远程路服务器上的文件,这是很郁闷的。

这里我们要放弃phpmysqladmin,通过mysql语句来导入数据库。很多人会纳闷怎么来执行SQL语句,这是一个关键的问题,这需要你的空间支持SSH(Secure Shell Protocol),并且你还得会一些linux命令。

首先通过SSH登录到服务器(我用putty登录工具),通过一些简单的linux命令找到我们的sql文件,然后运行下面的代码:

mysql db_name < data_file.sql

执行完命令之后如果没有任何提示,则说明我们的数据已经导入成功了(注意文件格式是date_file.sql, sql.gz在中文下会出错) 。

———————–2008.12.9 update———————-

有些时候你可能会遇到错误信息,说你的权限不够,那我们就需要加一些参数了。

mysql -hlocalhost -uusername -p db_name < data_file.sql

这样回车之后,就会有输入密码的提示,然后输入你的数据库密码就可以导入了。

参数-h是指定导入的服务器,-u是数据库的用户名,-p是登录数据库的密码,这三个参数后面不用加空格。

———————–2008.12.9 update———————-

这是一个很好的办法,但是也不是所有的人都可以用这个方法的,因为前提是你的空间必须支持SSH登录,而支持SSH登录的空间还是比较少的,这真是挺让人遗憾的。

还有一个办法就是把phpmyadmin里面的import那个功能模块提取出来,稍微改动一下也可以达到相同的效果。当然如果你是一个PHP高手,也可以自己写一个导入的程序,可以直接选择一个服务器的路径,期待ing。。。