微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

导入非常大的SQL文件时单次提交(MySQL)

我正在尝试将大型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] 举报,一经查实,本站将立刻删除。

相关推荐