$result = mysql_query("SELECT uid , pid , cate FROM upcm");while($rows = mysql_fetch_row($result)){$arry = explode($sepr,$rows[2],5);$query = "INSERT INTO upcn(uid,pid,cate1,cate2,cate3,cate4,cate5) VALUES('$rows[0]','$rows[1]','$arry[0]','$arry[1]','$arry[2]','$arry[3]','$arry[4]')";$result1 = mysql_query($query);if(!$result1){echo "fail<br>";}}
PS: 処理されたデータは 190,000 個のデータであり、約11M。サーバーの負荷が高いため、サーバーで使用されているApacheが終了しますか?
。 。
あなたの問題のような問題の場合、信頼性を高めるには、単一の SQL ステートメントを cli モードで実行する必要があります。 ! !
最悪の場合、これを行うのではなく、最初にデータをエクスポートしてからインポートする必要があります
select into を参照してください
詳細な説明については、以下のステートメントを参照してください...
処理能力(約1,000件)を見て、一括処理(3階で説明した方法)したい場合、何回行うことになりますか? 200,000件のレコードがあります。 。
単一の挿入で複数のデータを挿入しても大丈夫ですか?
1. PHP タイムアウト
2. Web サーバーのタイムアウト 3. 特殊文字はエスケープされません
4. count($array)
アルゴリズムは次のとおりです。 1,000 回ごとの INSERT ステートメントを複数の VALUE に組み立てる
ページング モードでセグメントごとに挿入する
php を介して手を変更することなく、SQL コマンドを直接使用して完了する
$sql =<<< SQL
INSERT INTO upcn(uid,pid,cate1) ,cate2,cate3,cate4,cate5)
SELECT uid , pid
, substring_index(substring_index(cate,'$sepr',1),'$sepr',-1)
, substring_index(substring_index(cate,'$sepr' ,2),'$sepr', -1)
, substring_index(substring_index(cate,'$sepr',3),'$sepr',-1)
, substring_index(substring_index(cate,'$sepr',4) ),'$sepr',-1 )
, substring_index(substring_index(cate,'$sepr',5),'$sepr',-1)
FROM upcm
SQL
のように書けませんか? 1k の挿入は当然 mysql をドラッグします ああ
1 回の挿入で ..values(),(),() を挿入できますか?
ストアド プロシージャとはどういう意味ですか?まだ勉強していません。
対処する必要がある問題がいくつかあります。
1. PHP タイムアウト
3. 特殊文字はエスケープされません
4. count($array)
アルゴリズム的に次のことを考慮します。複数の VALUE にまとめられた INSERT ステートメントが 1,000 回ごとに挿入されます
ページング方式でセグメントごとに挿入します
php を介して手を変えることなく、SQL 命令を直接使用して完了します
$sql =<<< SQL
INSERT INTO upcn(uid, pid , cate1, cate2, cate3, c...
これはマスターです! この方法は非常に効果的で、9.15 秒で完了しました。
対処する必要がある問題がいくつかあります。
1. PHP タイムアウト
2. Web サーバーのタイムアウト
3. 特殊文字はエスケープされません
4. count($array)
アルゴリズム的に次のように考慮します。複数の VALUE INSERT ステートメントを組み立てて挿入します
ページング方式でセグメントごとに挿入します
SQL 命令を直接使用して、php を通じて手を変更することなく完了します
$sql =<<< SQL
INSERT INTO upcn(uid ,pid, cate1,cate2,cate3,cate4,cate5)
、SELECT uid 、pid
、substring_index(substring_index(cate,'$sepr',1),'$sepr',-1)
、substring_index(substring_index(cate) ,'$sepr ',2),'$sepr',-1)
, substring_index(substring_index(cate,'$sepr',3),'$sepr',-1)
, substring_index(substring_index(cate,' $sepr', 4),'$sepr',-1)
, substring_index(substring_index(cate,'$sepr',5),'$sepr',-1)
FROM upcm
SQL
教えてください。 、マスター、これは SQL を使用して直接実行できます。PHP を介して手を変更せずにコマンドが完了するとはどういう意味ですか?
PHP を使用して SQL ファイルを作成し、それを SQL で実行しますか?
私も同じ状況に遭遇しました。問題がまだ解決せず…困っています…