[数据交换] 睿治如何抽取千万级别数据量

3068
5

AlexisP 小试身手Lv3

发表于2020-9-18 14:23

悬赏100

已解决

楼主
本帖最后由 AlexisP 于 2020-9-22 10:19 编辑

系统版本睿治V2.2.1


从mysql库中抽取800多万条数据报错,请问如何才能实现抽取800万数据?
目前最多有接近5000万数据,如何才能最高效率的分页进行抽取?
如果要分页的话,如何分页才能实现?




报错信息




2020-09-18 14:22:22 com.esen.exception.RuntimeException4I18N: 执行数据迁移时出现异常
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2115)
    at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1989)
    at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3400)
    at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:470)
    at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3112)
    at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2341)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2736)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2444)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)
    at com.esen.jdbc.pool.PooledStatement.getQureyResultSet(PooledStatement.java:54)
    at com.esen.jdbc.pool.impl.mysql.MysqlPooledStatement.executeQuery(MysqlPooledStatement.java:21)
    at com.esen.edataexchange.data.migrate.jdbc.JdbcReader.start(JdbcReader.java:95)
    at com.esen.edataexchange.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:47)
    at com.esen.edataexchange.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:24)
    at com.esen.ethreadpool.req.RequestTaskFutureImpl.call(RequestTaskFutureImpl.java:100)
    at com.esen.scheduling.LocaleTask.call(LocaleTask.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.esen.exception.RuntimeException4I18N: 发送数据时出现异常
    ... 23 more
Caused by: com.esen.exception.RuntimeException4I18N: 读取数据出现异常
    ... 23 more
Caused by: com.esen.jdbc.pool.impl.mysql.MysqlPooledSQLException: Query execution was interrupted, max_statement_time exceeded
    ... 23 more

2020-09-18 14:22:22 执行交换任务[xx_fee]出现异常:com.esen.exception.RuntimeException4I18N: 执行数据迁移时出现异常
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2115)
    at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1989)
    at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3400)
    at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:470)
    at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3112)
    at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2341)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2736)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2444)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)
    at com.esen.jdbc.pool.PooledStatement.getQureyResultSet(PooledStatement.java:54)
    at com.esen.jdbc.pool.impl.mysql.MysqlPooledStatement.executeQuery(MysqlPooledStatement.java:21)
    at com.esen.edataexchange.data.migrate.jdbc.JdbcReader.start(JdbcReader.java:95)
    at com.esen.edataexchange.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:47)
    at com.esen.edataexchange.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:24)
    at com.esen.ethreadpool.req.RequestTaskFutureImpl.call(RequestTaskFutureImpl.java:100)
    at com.esen.scheduling.LocaleTask.call(LocaleTask.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.esen.exception.RuntimeException4I18N: 发送数据时出现异常
    ... 23 more
Caused by: com.esen.exception.RuntimeException4I18N: 读取数据出现异常
    ... 23 more
Caused by: com.esen.jdbc.pool.impl.mysql.MysqlPooledSQLException: Query execution was interrupted, max_statement_time exceeded
    ... 23 more
截图202009181422563448.png

最近看过此主题的会员

esen_4PI055C3LR

esen_4K1QXCBMUFO3

ligaopeng

vishaw

18247666780

一点一点

最佳答案

xxxl

发表于2020-9-18 14:23

只看该作者

取消 关注该作者的回复

AlexisP 发表于 2020-9-18 14:48
字段前后长度是一致的,是直接睿治生成的表,就是因为数据量太大了所以报错,有什么分页的好方法吗 ...

暂时没有这种分页的方法,但是有关于etl调优的方法可以看一这个帖子https://bbs.esensoft.com/thread-134579-1-1.html
5个回答

只看楼主

AlexisP 小试身手Lv3

发表于2020-9-22 10:19

只看该作者

取消 关注该作者的回复

5#

请问睿治能不能实现一个循环,比如输出从1到100的每个整数这种的循环

xxxl 数据领袖Lv6

发表于2020-9-18 14:44

只看该作者

取消 关注该作者的回复

沙发

可能是字段影响,您检查一下报错前后的字段长度是否一致呢

AlexisP 小试身手Lv3

发表于2020-9-18 14:48

只看该作者

取消 关注该作者的回复

板凳

字段前后长度是一致的,是直接睿治生成的表,就是因为数据量太大了所以报错,有什么分页的好方法吗

xxxl 数据领袖Lv6

发表于2020-9-18 14:23

只看该作者

取消 关注该作者的回复

地板

AlexisP 发表于 2020-9-18 14:48
字段前后长度是一致的,是直接睿治生成的表,就是因为数据量太大了所以报错,有什么分页的好方法吗 ...

暂时没有这种分页的方法,但是有关于etl调优的方法可以看一这个帖子https://bbs.esensoft.com/thread-134579-1-1.html

xxxl 数据领袖Lv6

发表于2020-9-22 10:23

只看该作者

取消 关注该作者的回复

6#

AlexisP 发表于 2020-9-22 10:19
请问睿治能不能实现一个循环,比如输出从1到100的每个整数这种的循环

新问题重新提帖子哈

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

渠道咨询电话:137-0120-6790

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号