我想通过Ubuntu命令行将一个大约300MB的SQL文件导入到MySQL中。我使用了以下命令:
source /var/www/myfile.sql;
现在它正在显示看似无限的行:
Query OK, 1 row affected (0.03 sec)
然而它已经运行了一段时间。我之前从未导入过这么大的文件,所以我想知道这是否正常,如果进程停滞或出现错误,这是否会在命令行中显示,还是这个进程将一直继续下去?
谢谢
我想通过Ubuntu命令行将一个大约300MB的SQL文件导入到MySQL中。我使用了以下命令:
source /var/www/myfile.sql;
现在它正在显示看似无限的行:
Query OK, 1 row affected (0.03 sec)
然而它已经运行了一段时间。我之前从未导入过这么大的文件,所以我想知道这是否正常,如果进程停滞或出现错误,这是否会在命令行中显示,还是这个进程将一直继续下去?
谢谢
mysql -u <用户> -p<密码> <数据库名> < file.sql
注意: <-p>
和 <密码>
之间不应该有空格。-p<password>
) 时,它可能会被 shell 历史记录缓存,从而将您的密码透露给任何能够读取历史记录文件的人。而 -p
则要求您通过标准输入输入密码。split
命令拆分文件。Vim
仍然太慢了,所以我使用head
和tail
来确保我的拆分是可接受的。我还必须使用cat
附加头信息/变量。然后运行命令,它起作用了。我用45分钟完成了手动操作需要9小时才能完成的工作!谢谢Martin! - rlb.usa关于导入大文件所需的时间,最重要的原因是默认情况下mysql的设置是"autocommit=true",在导入文件之前必须将其关闭,然后检查如何像宝石一样导入文件...
首先打开MySQL:
mysql -u root -p
然后,您只需要执行以下操作:
mysql>use your_db
mysql>SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
mysql
客户端,这样你就不会看到长串的“OK”行了。mysql> SHOW PROCESSLIST
来查看正在运行的内容。但你可能更感兴趣的是“完成百分比”或剩余语句完成所需时间的估计值。mysql --verbose
用于查看每个命令的详细信息。在参考文献 http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html 中有提到。 - Martin Nucsudo pv -i 1 -p -t -e DB.sql | mysql -uDB_USER -p DBANAME
。 - abhibunzip2 DB.gz.bz2 | pv -i 1 -p -t -e -s 2758819477 | mysql ...
@abhi - Bill Karwingrep -A 200 ‘CREATE TABLE `xyz_table’ sql_file_path > new_light_sql_file_path.sql
通过命令行将大型SQL文件导入到MySql
例如: mysql -u root -p aanew < aanew.sql