2011-12-30 58 views
1

我有一个包含30,000条UPDATE行的SQL文件。当我通过phpmyadmin上传时,它会在某个点冻结,并不会更新所有内容。如何在没有问题的情况下执行大量的SQL查询?

有没有办法一次执行所有30,000行,没有问题?或者我必须一次通过并手动执行200行?

行实例:

UPDATE `table` SET `value1`='Some text', `value2`=0 `value3`=1 WHERE id=500; 

^I有30000线那样。

+0

我怀疑这取决于“冻结”是由于一些SQL错误和/或错误和/或配置...任何错误消息(S)?日志显示了什么? – Yahia 2011-12-30 13:13:17

+0

是的,最好是小批量更新。 – 2011-12-30 13:14:29

+0

你能向我们展示一些这些行吗?我试图得到的是:是否有任何方式可以计算WHERE子句或值? – 2011-12-30 13:15:17

回答

5

PHPMyAdmin的查询解析速度很慢。这是更好的通过SSH登录到服务器并使用mysql客户执行命令:

$ mysql -uUsername -pPassword DatabaseName < script.sql 

如果你没有SSH访问,你可以上传SQL脚本(通过FTP等)和写一个小PHP脚本调用使用systemexec或类似PHP函数命令:

<?php 
system('mysql -uUsername -pPassword DatabaseName < script.sql'); 

然后通过浏览器调用脚本。

请确保您使用mysql的完整路径(通常为/ usr/bin/mysql)和您的脚本文件。

如果您使用非系统字符集,请确保您使用的是add the default_character_set选项。

+0

谢谢!!!!!!〜 – supercoolville 2011-12-30 13:34:32

相关问题