如何在没有问题的情况下执行大量的SQL查询?
问题描述:
我有一个包含30,000条UPDATE行的SQL文件。当我通过phpmyadmin上传时,它会在某个点冻结,并不会更新所有内容。如何在没有问题的情况下执行大量的SQL查询?
有没有办法一次执行所有30,000行,没有问题?或者我必须一次通过并手动执行200行?
行实例:
UPDATE `table` SET `value1`='Some text', `value2`=0 `value3`=1 WHERE id=500;
^I有30000线那样。
答
PHPMyAdmin的查询解析速度很慢。这是更好的通过SSH登录到服务器并使用mysql客户执行命令:
$ mysql -uUsername -pPassword DatabaseName < script.sql
如果你没有SSH访问,你可以上传SQL脚本(通过FTP等)和写一个小PHP脚本调用使用system,exec或类似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
我怀疑这取决于“冻结”是由于一些SQL错误和/或错误和/或配置...任何错误消息(S)?日志显示了什么? – Yahia 2011-12-30 13:13:17
是的,最好是小批量更新。 – 2011-12-30 13:14:29
你能向我们展示一些这些行吗?我试图得到的是:是否有任何方式可以计算WHERE子句或值? – 2011-12-30 13:15:17