mysql 数据分批查询

mysql 数据分批查询,第1张

for($i=0$i<1000$i=$+100){

"SELECT * FROM tbl_name ORDER BY key_id DESC LIMIT {$i},{$i+100}"

}

在有些业务场景中需要分批去取数据库表中的全部数据来进行处理,最简单的方法就是使用分页查询语句(偷懒以MySQL为例):

[sql] view plain copy print?

select * from datatable limit offset,amount

select * from datatable limit offset,amount

这里就会有一个问题,随着offset值的越来越大,这条sql要扫描的表数据就会越来越多,因为要定位到offset这一行就需要扫描比offset小的所有行。显然在一张大数据量的表中,去这样做,性能就会出问题。为了避免这样的情形出现,我们自然会想到使用索引来解决,比如使用自增序列id进行分批取:

[sql] view plain copy print?

select * from datatable where id >= start and id<start+batchCount

select * from datatable where id >= start and id<start+batchCount

这样我们对id建索引,然后分批去取,显然效果会高很多,但是如果自增序列由于删除等 *** 作变得不是连续,就会出现空执行和多执行的情况出现。要解决这个方法,我们就需要结合使用索引和分页的优势来处理:

[sql] view plain copy print?

select * from datatable where id >= start limit batchCount

select * from datatable where id >= start limit batchCount

然后每次取回来我们再计算出起始id值,再去取下一批数据。这样就可以既避免了第一种不走索引,查询性能低下的问题,又解决了第二种id不连续,导致取回来的数据量不稳定导致浪费的问题了。

我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作。网上有一些关于直接将Excel导入MySQL的教程,不知道是我安装的office不对还是MySQL不对,极少数情况下可以成功导入数据,所以感觉这种直接导入的方法会受到office版本等因素的诸多限制,所以今天向大家介绍从txt批量导入数据到MySQL的方法,当然首先介绍的是Excel数据转成txt数据。这种方法虽然步骤较多,但是导入成功率极高,所以推荐给大家:

可别说你把excel转成txt的方法是复制粘贴,那样的数据格式乱而且对于后续的导入有一定的出错率。正确的做法首先将excel文档另存成CSV(逗号分隔)文档,存储过程中会有一系列的警告提示,一路OK下来即可。

用记事本的打开方式打开刚刚保存的.csv文件,我们发现,列与列之间用逗号(,)隔开:

将其另存为.txt文件,并且编码要选择UTF-8:

成功保存txt文件后就可以用PHPmyadmin导入该文件了。但这里一定要注意一点,该文件的名字一定不能出现中文,文件的存放路径也不能有中文出现。如果出现中文,导入过程中会提示你找不到文件路径。

在SQL菜单中输入如下命令:

Load Data InFile 'D:/1.txt' Into Table `res_type_collect` fields terminated by ',' lines terminated by '\n'

其中'D:/1.txt'是你文件存放的绝对路径,注意是“/”而不是“\”;Table 后的值是你的表名;fields terminated by后的值是列与列间的分割标识(个人感觉“,”比较靠谱,不易出错。而tab可能在导入的时候出现问题);lines terminated by后面的值是行与行之间的分割标识,这个没的说,一般都是“\n”.

点击“执行”后,上方提示成功插入X行数据,查看:

注意上图,txt文件的第一行的第一个数据导入出现了错误,这应该是软件的问题吧,不过不影响,因为仅仅这一项错了,所以手动改过来就可以了。由此便完成了MySQL批量导入Excel、txt数据的任务啦。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5951973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-09
下一篇 2023-03-09

发表评论

登录后才能评论

评论列表(0条)

保存