我正在尝试将大型sql文件(> 2.5 Gb)恢复到Windows上的MySQL数据库中.
我无法编辑这些文件来添加SET autocommit = 0等文本;在文件的开头(这是改善导入时间所必需的).
我也无法使用源,因为它输出到屏幕(非常慢)并且即使文件中有任何错误也会继续执行.例如.:
MysqL> CREATE DATABASE IF NOT EXISTS dbname;
MysqL> USE dbname;
MysqL> SET autocommit=0;
MysqL> source file.sql;
MysqL> COMMIT;
是否可以在导入仅适用于当前会话的sql文件之前和之后运行任意命令?我已经尝试了以下两种方法,并且都没有在Windows上工作(在这两种情况下都会忽略第二个操作):
MysqL -u username -p -e "SET autocommit=0;" dbname < file.sql
要么,
MysqL -u username -p < initial_commands.sql < file.sql
如果可能的话,我不想在每次执行此操作时更改全局自动提交设置,然后必须记住将其更改回来(我也不确定这是否可以在没有最终COMMIT的情况下工作;).
也许有一种方法可以使用BEGIN … COMMIT;而不是关闭自动提交?
对于那些必须做这种事情的人的任何建议我都很满意!
解决方法:
(echo set autocommit = 0;&& type file.sql&& echo.&& echo commit;)| MysqL -u username -p passwd
只需使用管道而不是输入重定向,使用echo命令和echo.换行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。