1 .原表500万数据;需要从原表中取出字段('name'或者'content') 中的 中文 转换为 拼音全拼 和 拼音缩写 然后插入到新表;

name字段的数据不全是中文;包含(html,其他字符,可能很长,一般都是40个中文以内,有重复的)

2 .方案: 定时任务->获取固定数量的数据->处理完后->批量插入新表

3 .测试数据(10000条记录)的结果: 10000

查询耗时:0.023秒

循环耗时:612.662秒

插入耗时:0.022秒

内存消耗:9.61 M

4 . thinkphp5框架 代码:

{

set_time_limit(0);

$t0 = microtime(true);

$content = Db::name('scene_data')->where(['type'=>0, 'status'=>1])->order('id')->limit(10000)->page($page)->field('content')->select();

$count = count($content);

$pinyin = new Pinyin();

$t1 = microtime(true);

echo '查询耗时:'.round($t1-$t0,3).'秒
';

$array = null;

$time = time();

$type = 0;

for ($i=0; $i < $count; $i++){

$arr = [];

$name = $this->newName($content[$i]['content']);

if ($name) {

if (strlen($name) > 120) {

continue;

}

$arr['name'] = $name;

$firstWord = substr($name, 0, 3);

$arr['first_word'] = $pinyin->abbr($firstWord);

$arr['short_word'] = $pinyin->abbr($name);

$arr['pinyin'] = $pinyin->permalink($name);

$array[] = "('".$arr['name']."','".$arr['first_word']."','".$arr['short_word']."','".$arr['pinyin']."','".$type."','".$time."')";

} else {

continue;

}

}

$array = array_unique($array);

$array = implode(',', $array);

//程序运行时间

$t2 = microtime(true);

echo '循环耗时:'.round($t2-$t1,3).'秒
';

$sql = "REPLACE INTO `cd_pinyin` ( `name`, `first_word`, `short_word`, `pinyin`, `type` , `create_time`) VALUES " . $array;

$res = Db::execute($sql);

$t3 = microtime(true);

echo '插入耗时:'.round($t3-$t2,3).'秒
';

echo '内存消耗:'.round(memory_get_usage()/1048576,2)." M
";

return $res ? [RESULT_SUCCESS, '操作成功'] : [RESULT_ERROR, Db::name('pinyin')->getError()];

}

public function newName($str)

{

if ($str) {

// 是否存在非中文符号

$res = preg_match('/[^\x{4e00}-\x{9fa5}]/u', $str);

if($res) {

$str = preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $str);

}

return $str;

}

}

5 .目前的测试结果来看大概需要83.3小时的时间处理完;请教各位更好的方案;(主要集中在对数据的处理上)

500万数据mysql_mysql 单表500万数据经过处理后新增到新表相关推荐

  1. 2023年Q2空调行业品牌数据榜单(京东商品数据)

    随着夏季的来临,高温天气也带动部分家电行业的销售,以空调为代表的家电市场正逐步恢复活力.结合鲸参谋电商数据分析平台的相关数据,我们来分析一下2023年Q2空调市场的具体销售表现. 根据鲸参谋平台的数据 ...

  2. oracle判断数据是否存在吗_oracle数据库判断表是否存在,存在删除,并创建新表...

    --判断表是否存在,存在就删除 declare v_exists number; begin select count(*) into v_exists from user_tables where ...

  3. 清理jdk注册表_JDK 9早期版本安装后的Windows注册表清理

    清理jdk注册表 在我的上一篇博文中 ,我演示了在安装早期版本的JDK 9(内部版本68)之后围绕Oracle Java符号链接 (基于Windows的计算机上的C:\ProgramData\Orac ...

  4. mysql按首数字分表_MySql基础-数据分表

    有时候会出现数据冗余,比如下面情况 首先,我们需要建一个类型表,把goods表中cate字段中的所有类型存到类型表中,有两种方法: 第一种方法: #建一个新表类型表 create table good ...

  5. sql复制表结构和数据_SQL复制表

    sql复制表结构和数据 In real time we do face situations where we need to copy data from one table to another ...

  6. 使用sql语句将一张旧表中的数据取出并插入到另一张新表中(字段不对应),并将中文name转变为拼音存入到code中

    要求:将公司旧项目中一个表的数据取出,全部放入到新项目的表中,两张表的字段是不对应的,数据有3446条,一条一条改,效率太低,所有这里采用的是sql语句进行操作 参考语法链接:SQL INSERT I ...

  7. DB2复制表结构及数据

    在DB2数据库中,复制已经存在的表的结构及其数据.我们采用两步走方式:第一步先复制表结构,第二部拷贝数据. 第一步:复制表结构 方法一: Create table test_Rate as (sele ...

  8. mysql表关联查询都有什么方式_所有关联表查询方式

    前言 想象场景:小白初入职场,看到很多数据库的代码发现都不清楚,急哭小白了,急急忙忙的去百度,收集到的资料很多,也很迷,乱七八糟的都是 虫虫:为了方便小白 虫虫把关联表的查询方式总结了 关联查询种类 ...

  9. 通过ActiveWorkbook.Sheets.Add将新表插入到最后的代码

    通常情况下,我们在EXCEL的工作薄中,使用菜单操作:插入一个新的工作表,那么,该工作表总是会出现在当前被选中的工作表的前面. 如果您想将新插入的工作表,让它的位置出现在所有工作表的最后,那么,得使用 ...

最新文章

  1. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...
  2. MSSQL SELECT(刚刚)新插入到表中的那条记录
  3. (二)Javascript面向对象编程:构造函数的继承
  4. SpringBoot+ElementUI实现多选设置一月中指定几天的属性,SpringBoot中通过反射实现
  5. 数学分析中的基本定理
  6. html 字体图标大小,CSS ICONFONT 基线和大小问题
  7. RawData是Bayer转RGB格式代码分析和NEON单元加速方法
  8. php被挂马,PHP网站被挂马防御战
  9. 利用matlab实现AM调制解调
  10. zmud命令详细解答
  11. 使用windows自带的测速工具WinSat对移动硬盘进行测速
  12. 第十八届全国大学生智能汽车竞赛 智能视觉组比赛细则
  13. Linux下不保存退出以及相关退出命令
  14. Vue脚手架安装 与 Vue项目创建运行、vue项目迁移后运行失败问题
  15. ESP32开发(一):搭建windows开发环境--ESP-IDF工具命令提示符操作
  16. 【英语天天读】Advice to a Young Man
  17. 通过Delphi打造自己的文本编辑器
  18. u盘启动安装xp/win7系统详解
  19. 【Guacamole中文文档】二、用户指南—— 2.Guacamole源码安装
  20. hive的排序函数(hive之四by)

热门文章

  1. gateway动态路由_微服务与网关技术(SIA-GateWay)
  2. bzoj3231 [SDOI2008]递归数列 矩乘
  3. 【英语学习】【WOTD】wherewithal 释义/词源/示例
  4. Android:QQ登录页面
  5. iOS如何退出测试软件,如何继续测试iOS应用程序,使用UIAutomation仪器,甚至应用程序退出后?(How to c...
  6. neu坐标系和xyz坐标系转换_ArcGIS投影坐标系下坐标转换成地理坐标系经纬度
  7. 写在使用 Linux 工作一年后
  8. SCCM安装所需组件图
  9. 多线程之并发基础(四)
  10. 寒假集训日志(二)——最小生成树,拓扑排序,欧拉回路,连通路