我有一個包含30,000條UPDATE行的SQL文件。當我通過phpmyadmin上傳時,它會在某個點凍結,並不會更新所有內容。如何在沒有問題的情況下執行大量的SQL查詢?
有沒有辦法一次執行所有30,000行,沒有問題?或者我必須一次通過並手動執行200行?
行實例:
UPDATE `table` SET `value1`='Some text', `value2`=0 `value3`=1 WHERE id=500;
^I有30000線那樣。
我有一個包含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選項。
謝謝!!!!!!〜 – 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