84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
现在数据库中有3千多条这样的记录,每条记录中有地区中文名和地区英文名(如下图
我现在想用redis的队列lpush和rpop实现批量更新,sql语句我已经写好了(如下图)
代码我是这样写的(如下图),我把3千多条sql语句存进list中(lpush),准备每次取出来一条执行(rpop),逐条执行,接下来不知道怎么写了,请教大家接下来怎么写,现在已经把sql语句放到了list中;还有我cli下查看list的值,中文好像有乱码(如下图),我启动cli时加了 --raw,请大家解答一下
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
insert into base_region(region_name, en_name) values('中国','Zhongguo'), ('北京', 'Beijing'),...,('上海', 'Shanghai') on duplicate key update en_name = values(en_name);
一句开销极小的sql就搞定(一个数据库连接,性能跟批量insert into数据差不多)。
需要注意两点:
values(),(),(),() 中()的值需要你用for循环拼接好
region_name 必须是唯一索引,你可以临时先对这个字段添加一个唯一索引,然后这个sql执行结束后,drop掉
其实不用redis就可以, 你把所有的SQL放在一个文件中, 读一条执行一条, 不就行了?
function getSql() { $fp = fopen('sql.txt', 'r'); while (!feof($fp)) { yield fgets($fp); } } foreach (getSql() as $sql) { executeSql($sql); } function executeSql() { //执行语句 }
一句开销极小的sql就搞定(一个数据库连接,性能跟批量insert into数据差不多)。
需要注意两点:
values(),(),(),() 中()的值需要你用for循环拼接好
region_name 必须是唯一索引,你可以临时先对这个字段添加一个唯一索引,然后这个sql执行结束后,drop掉
其实不用redis就可以, 你把所有的SQL放在一个文件中, 读一条执行一条, 不就行了?