写一些脚本的心得总结系列第3篇------同步数据到其他表

3.同步数据到其他表的。


这种又分插入和更新字段两种情况,除了sql方面的逻辑外,要考虑记录执行sql和变化前后数据记录。总是要做最坏的打算,一旦更新错了还能回滚数据。

比如在更新之前先记录被更新的数据记录到某表(新建表)或文件中。在编写阶段也做到先跑一条数据,然后再进循环去测试。

一步一步,小心驶得万年船,毕竟你是在做非select操作。

4.从一种DB迁移数据到另外一种DB的。(比如从mssql->mysql,或反之)
这种迁移其实和第二种是类似的,除了业务逻辑外,也要考虑上线后数据的回滚,还有查询和插入需要做到分批。编写代码的时候各种引用渠道和调用model不要写到foreach里面了,驱动也别滥用,每一次的初始化都会消耗链接资源和时间成本。
把不必要的查询都干掉,集中在一次查询里面,同时也避免什么都select *之类的查询,用到哪几个字段列就select那几个。
在设计数据表的时候(mysql),还是多用时间戳,方便查询,即使显示格式要求,也可以在脚本层面去做。

在插入的时候还应该多用框架自带的批量方法,比如CI中有insert_batch方法,多了解一下驱动底层的实现,免得自己重复造轮子还加一些多于判断。

比如我之前写的分批插入:

for ($i = 1; $i<= $times;$i++) {$insertData = array();$partData = $this->mssql->select($sql, array(), $i, 10000);//var_dump($partData);die();foreach ($partData as $p) {$insertData[] = array('user_id' => $p['user_id'],'login_from' => $p['login_from'],'type' => $p['type'],'ip' => $p['ip'],'created' => $p['created']);}$allData = array_chunk($insertData, 1000); // 分批插入$num = count($allData);for ($n = 0; $n< $num; $n++) {$mysql->insert_batch($tableName , $allData[$n]);}
}

 

其中array_chunk那句是把装好的10000条数据的数组再分成1000个一份,然后每一千个记录插入一次。看起来很合理,但实际上CI的insert_batch里面已经帮我们这么做了。

DB_active_rec.php源码如下:

// Batch this baby
for ($i = 0, $total = count($this->ar_set); $i < $total; $i = $i + 1000)
{$sql = $this->_insert_batch($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_keys, array_slice($this->ar_set, $i, 1000));$this->query($sql);
}

 


这里面已经是1000条一次性批量插入了(这是我修改过的,默认是100),当然mssql的官方驱动比较二逼,那个_insert_batch方法并不存在,我把mysql驱动对应的那个_insert_batch方法给拷贝过去即可。

多了解一些底层实现,就少一些麻烦。

转载于:https://www.cnblogs.com/freephp/p/5094238.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyMC3和Lasagne构建神经网络(ANN)和卷积神经网络(CNN)

转自http://www.sohu.com/a/162460147_505915 源地址https://twiecki.io/blog/2016/07/05/bayesian-deep-learning/ 今天&#xff0c;我们将使用Lasagne构建一个更有趣的模型&#xff0c;这是一个灵活的Theano图书馆&#xff0c;用于构建各种类型的神经网络。你可能知道&…

OpenCV高斯滤波GaussianBlur

图像处理中&#xff0c;常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。 三种滤波器的对比滤波器种类基本原理特点均值滤波使用模板内所有像素的平均值代替模板中心像素灰度值易收到噪声的干扰&#xff0c;不能完全消除噪声&#xff0c;只能相对减弱噪声中值滤波计算模板内…

(附视频) | AI奠基人、美国AI科学家特伦斯谈深度学习​

来源&#xff1a;笑看国际风云特伦斯 谢诺夫斯基&#xff08;Terrence Sejnowski&#xff09;&#xff1a;世界十大人工智能科学家之一&#xff0c;还是美国仅3位在世的‘四院院士’之一&#xff0c;同时兼任全球人工智能顶级会议NIPS基金会主席。1989年&#xff0c;特伦斯加入…

Chapter 3.GDI/DirectDraw Internal Data Structures

说明&#xff0c;在这里决定跳过第二章&#xff0c;实在是因为里面涉及的内容太理论&#xff0c;对我而言又太艰深 3.1 HANDLES AND OBJECT-ORIRNTED PROGRAMMING In normal object-oriented programming practice,information hiding is achieved by declaring certain member…

OpenCV图像金字塔

图像金字塔是图像多尺度表达的一种&#xff0c;是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低&#xff0c;且来源于同一张原始图的图像集合。其通过梯次向下采样获得&#xff0c;直到达到某个终止条件才停止采…

带你深入理解图灵机--天才所在的时代

来源&#xff1a;人机与认知实验室这几年由于区块链的大热&#xff0c;以太坊独特的solidity语言实现智能合约功能&#xff0c;图灵完备这个词走进大家的视线。没有计算机专业知识的同学其实很难理解这个词的意思&#xff0c;其实计算机专业的同学都没有深入理解图灵机&#xf…

用PyMC3进行贝叶斯统计分析(代码+实例)

问题类型1&#xff1a;参数估计 真实值是否等于X&#xff1f; 给出数据&#xff0c;对于参数&#xff0c;可能的值的概率分布是多少&#xff1f; 例子1&#xff1a;抛硬币问题 硬币扔了n次&#xff0c;正面朝上是h次。 参数问题 想知道 p 的可能性。给定 n 扔的次数和 h …

2015总结及2016计划

2015计划完成情况&#xff1a; 1.网站建起来&#xff08;未完成&#xff09; 2.发布一款游戏&#xff08;cocos2dx或u3d&#xff09;&#xff08;未完成&#xff09; 3.稳定一年工作&#xff08;完成&#xff09; 4.学习C或C&#xff0c;能够使用其中一种进行windows编程&#…

华为: 即将发布5G+VR的颠覆式智能眼镜

来源&#xff1a;VR每日必看6月27日MWC19上海期间&#xff0c;华为手机业务总裁何刚在全球终端峰会发表演讲&#xff0c;提及华为终端在5G时代的全场景战略是“18N”。“1”就是华为手机&#xff0c;“8”则囊括了TV、平板、PC、耳机、车机、手表、眼镜、音响八项终端产品&…

OpenCV的数据类型——基础数据类型

OpenCV有很多数据类型&#xff0c;从组织结构的角度来看&#xff0c;OpenCV的基础类型类型主要分为三类。第一类是直接从C原语中继承的基础数据类型&#xff1b;第二类是辅助对象&#xff1b;第三类是大型数据类型。本文主要介绍OpenCV的基础数据类型。 目录 Point类 Scalar…

Process finished with exit code -1073741819 (0xC0000005)

运行TensorFlow出现如下错误&#xff0c;尝试了很多网上的方法都不行&#xff0c;最后把代码中的中文路径改为英文后就解决了

LeetCode - Partition List

题目&#xff1a; Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example, Given 1-…

Cell:重大突破!三位学术大咖,打造全新“DNA显微镜”

来源&#xff1a;中国生物技术网传统上&#xff0c;科学家们使用光、X射线和电子来观察组织和细胞的内部。如今&#xff0c;科学家们能够在整个大脑中追踪线状的神经纤维&#xff0c;甚至可以观察活的小鼠胚胎如何产生原始心脏中的跳动细胞。但是这些显微镜无法看到的是&#x…

OpenCV的数据类型——辅助对象

在上一篇文章中&#xff0c;主要介绍了OpenCV的基础数据类型。接下来在本篇文章中将主要对OpenCV的辅助对象进行介绍。 cv::TermCriteria类 在很多算法中都存在着循环嵌套&#xff0c;只有满足终止条件时才会退出。通常情况下&#xff0c;终止条件的形式要么是达到允许的有限…

概率密度函数某一点的意义

在连续型随机变量的概率密度函数中&#xff0c;某一点的值不等于该点的概率值&#xff0c;就像不能计算汽车在某一点的速度&#xff0c;因为速度是距离除以时间&#xff0c;对某一点来说不存在距离的概念。如果要计算某一点x的概率的话&#xff0c;就要对x取邻域&#xff08;无…

eclipse中monokai插件的安装

eclipse中monokai插件的安装转载于:https://www.cnblogs.com/zhujiabin/p/5099675.html

Science Robotics近日刊登CMU重大突破,无需手术,普通人就能用意念操控机械臂!...

来源&#xff1a;机器人大讲堂导读顶尖学术期刊《科学》旗下的Science Robotics本月19号刊登了脑机接口&#xff08;BCI&#xff09;领域的一项突破成果。美国卡内基梅隆大学的贺斌教授带领其研究团队与明尼苏达大学合作&#xff0c;成功开发出第一款非侵入式的意念控制机械臂&…

使用pymc3可能遇到的问题及解决方法

PyMC3机器学习库&#xff0c;基于heano, NumPy, SciPy, Pandas, 和 Matplotlib。 安装 pip install pymc3&#xff0c;pip命令可以安装pymc3并安装其依赖库 首次运行报错 这可能是缺少某些依赖库导致的&#xff0c;根据报错信息安装即可 运行出现一长串c代码&#xff0c;或…

【采药.】

采药 题目链接 题意 在这规定时间内采摘草药&#xff0c;使得获得的草药总价值最大&#xff08;动态规划&#xff09; 思路 初始化数组并输入动态规划输出 坑点 容易忘记初始化 算法一&#xff1a;动态规划 时间复杂度 O(n * T) 实现步骤 输入动态规划输出 代码 #include…

OpenCV的工具函数

OpenCV3也提供了一些经常用于计算机视觉的实用功能&#xff0c;列举如下: 功能描述cv::alignPtr() Align pointer to given number of bytes 对齐指针到指定字节数 cv::alignSize() Align buffer size to given number of bytes 将缓存区大小与给定的字节数对齐 cv::allocate(…