MYSQL数据库 LIMIT限定特定行数

最近在运行Informatica全量抽取时候,系统报了很多莫名的错误,日志也没有显示警告信息。按有限的日志信息查询,可能的原因一般是磁盘空间不够,内存不够,或者是数据量量太大,缓存爆了。

经排查,是加载的数据量过大,导致了数据加载的失败。

只好通过限制每次的加载数量,分批多次进行跑数据了。

业务系统使用的是Mysql数据库,因此在ODS层抽数时候,使用LIMIT语句限制数量。

LIMIT后面可以跟一个或者两个整数常量,如果跟两个整数的话,第一个整数用于指定第一个返回结果的偏移量,第二整数用于指定返回结果的条目数。但值得注意的是第一个结果的偏移量是0(而不是1),所以如果您只关心结果的第一个,那么可用如下语句实现。

select * from table limit 0,1;

如果LIMIT只跟着一个整数n的话,表示只搜索前n个记录。所以limit n 等价于 limit 0,n。

如果是两个整数,类推。

1select * from table limit 7,-1; //搜索记录行 8到最后一行 2select * from table limit 7; //搜索前7行记录 3select * from table limit 0,7; //跟上一条命令等价,搜索前7行记录

因此最后决定通过用Bluk方式,一次加载500w

1select * from table limit 0,5000000; //搜索记录行 1-5000000 2select * from table limit 5000000,10000000; //搜索记录行 5000001-10000000 3......
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''