84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
现在数据库中有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放在一个文件中, 读一条执行一条, 不就行了?