現(xiàn)在數(shù)據(jù)庫中有3千多條這樣的記錄,每條記錄中有地區(qū)中文名和地區(qū)英文名(如下圖
我現(xiàn)在想用redis的隊列l(wèi)push和rpop實現(xiàn)批量更新,sql語句我已經(jīng)寫好了(如下圖)
代碼我是這樣寫的(如下圖),我把3千多條sql語句存進list中(lpush),準(zhǔn)備每次取出來一條執(zhí)行(rpop),逐條執(zhí)行,接下來不知道怎么寫了,請教大家接下來怎么寫,現(xiàn)在已經(jīng)把sql語句放到了list中;還有我cli下查看list的值,中文好像有亂碼(如下圖),我啟動cli時加了 --raw,請大家解答一下
擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
insert?into?base_region(region_name,?en_name)?values('中國','Zhongguo'),?('北京',?'Beijing'),...,('上海',?'Shanghai')?on?duplicate?key?update?en_name?=?values(en_name);
一句開銷極小的sql就搞定(一個數(shù)據(jù)庫連接,性能跟批量insert into數(shù)據(jù)差不多)。
需要注意兩點:
values(),(),(),() 中()的值需要你用for循環(huán)拼接好
region_name 必須是唯一索引,你可以臨時先對這個字段添加一個唯一索引,然后這個sql執(zhí)行結(jié)束后,drop掉
其實不用redis就可以, 你把所有的SQL放在一個文件中, 讀一條執(zhí)行一條, 不就行了?
function?getSql() { ????$fp?=?fopen('sql.txt',?'r'); ????while?(!feof($fp))?{ ????????yield?fgets($fp); ????} } foreach?(getSql()?as?$sql)?{ ????executeSql($sql); } function?executeSql() { ????//執(zhí)行語句 }
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號