ubuntu导入mysql脚本_通过命令行将大型sql文件导入MySql

问题描述

我正在尝试通过Ubuntu中的命令行将大约300MB的sql文件导入MySql。我用了

source /var/www/myfile.sql;

现在它显示了看似无限的行:

Query OK, 1 row affected (0.03 sec)

然而它现在已经运行了一段时间。我之前没有导入这么大的文件所以我只是想知道这是否正常,如果进程停止或有一些错误,这将显示在命令行中还是这个进程将无限期地继续?

谢谢

最佳解决方案

您可以使用标准输入导入.sql文件,如下所示:

mysql -u -p < file.sql

注意:和之间不应该有空格

建议编辑的注意事项:建议的编辑使用内联密码参数稍微改变了这个答案。我可以推荐它用于脚本,但是你应该知道,当你直接在参数(-p)中写密码时,它可以通过shell历史记录缓存,向任何能够读取历史文件的人显示你的密码。而-p要求您通过标准输入输入密码。

次佳解决方案

关于导入大文件所花费的时间的人最重要的是需要更多时间是因为mysql的默认设置是“autocommit = true”,你必须在导入文件之前将其设置为off,然后检查导入如何像gem一样工作…

首先打开MySQL:

mysql -u root -p

然后,您只需要执行以下操作:

mysql>use your_db

mysql>SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

第三种解决方案

+1到@MartinNuc,您可以在批处理模式下运行mysql客户端,然后您将看不到”OK”线路的长流。

导入给定SQL文件所需的时间取决于很多事情。不仅是文件的大小,还有文件的类型,服务器服务器的强大程度,以及同时运行的其他内容。

@MartinNuc说他可以在4-5分钟内加载4GB的SQL,但我已经运行了0.5 GB的SQL文件并且在较小的服务器上需要45分钟。

我们无法猜测在服务器上运行SQL脚本需要多长时间。

你的评论,

@MartinNuc是正确的你可以选择让mysql客户端打印每个语句。或者您可以打开第二个会话并运行mysql> SHOW PROCESSLIST以查看正在运行的内容。但是你可能对”percentage done”数字或者完成剩余语句需要多长时间的估计更感兴趣。

对不起,没有这样的功能。 mysql客户端不知道运行以后的语句需要多长时间,甚至不知道有多少语句。因此,无法对完成所需的时间进行有意义的估算。

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值