ubuntu 通过命令行将大型SQL文件转换为MySQL

svujldwt  于 4个月前  发布在  Mysql
关注(0)|答案(6)|浏览(96)

我试图通过命令行在Ubuntu中导入一个大约300MB的SQL文件到MySQL。我使用

source /var/www/myfile.sql;

字符串
现在它显示了一个看似无限的行:

Query OK, 1 row affected (0.03 sec)


我以前没有导入过这么大的文件,所以我只想知道这是否正常,如果进程停止或有一些错误,这会显示在命令行中还是这个进程会无限期地继续下去?
谢谢

vpfxa7rd

vpfxa7rd1#

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

注意:<-p><password>之间不能有空格

参考:http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

**建议编辑的注意事项:**这个答案被建议编辑为使用内联密码参数而略有改变。我可以推荐它用于脚本,但你应该知道,当你直接在参数(-p<password>)中写入密码时,它可能会被shell历史缓存,向任何可以读取历史文件的人透露你的密码。而-p要求你通过标准输入输入输入密码。

z4bn682m

z4bn682m2#

伙计们,关于导入大文件所花费的时间,最重要的是它需要更多的时间,因为mysql的默认设置是“autocommit = true”,你必须在导入文件之前设置它,然后检查导入如何像宝石一样工作。
第一次打开MySQL:
mysql -u root -p
然后,你只需要做以下几点:
第一个月
mysql>SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

azpvetkf

azpvetkf3#

+1到@MartinNuc,你可以在批处理模式下运行mysql客户端,然后你就不会看到长长的“OK”行。
导入一个给定的SQL文件所需的时间取决于很多因素。不仅是文件的大小,还有其中语句的类型,服务器的功能有多强大,以及同时运行的其他东西有多少。
@MartinNuc说他可以在4-5分钟内加载4GB的SQL,但我已经运行了0.5GB的SQL文件,并在较小的服务器上花费了45分钟。
我们无法真正猜测在服务器上运行SQL脚本需要多长时间。
回复你的评论,
@MartinNuc是正确的,你可以选择让mysql客户端打印每一条语句。或者你可以打开第二个会话并运行mysql> SHOW PROCESSLIST来查看正在运行的内容。但是你可能更感兴趣的是“完成百分比”数字或完成剩余语句所需的估计时间。
很抱歉,没有这样的功能。mysql客户端不知道运行后面的语句需要多长时间,甚至不知道有多少语句。所以它不能给予一个有意义的估计,估计需要多长时间才能完成。

wlp8pajw

wlp8pajw4#

我使用mysqldumpsplitter脚本来恢复大型sql,我把我的sql.gz拆分成单独的表,然后加载类似mysql workbench的东西,并将其作为恢复到所需模式的过程。
下面是脚本https://github.com/kedarvj/mysqldumpsplitter
这适用于更大的SQL恢复,我在一个网站上使用的平均值是2.5GB的sql.gz文件,20GB未压缩,完全恢复后约为100GB

qyuhtwio

qyuhtwio5#

我导入了最后几天一个大的SQL文件是大于11 GB。在我的情况下,不需要所有的数据库。我只导入了一些表我需要。所以也许以下解决方案工程的人;

grep -A 200 ‘CREATE TABLE `xyz_table’ sql_file_path > new_light_sql_file_path.sql

字符串
一旦你创建了轻的sql文件,你可以很容易地导入它如下cmd。
mysql -u username -p(pass)databaset < new_light_sql_file_path.sql

2w2cym1i

2w2cym1i6#

通过命令行将大型sql文件转换为MySql

1.第一个下载文件
1.将文件粘贴到主页。
1.在终端中使用以下命令(CMD)
1.文件名:mysql -u username -p databsename < file.sql
示例:mysql -u root -p anew < aanew.sql

相关问题