目录
- 一、导出问题
一、导出问题
DBeaver 是一款开源且免费的数据库管理工具,我经常用它来导出项目上急需统计的数据。有一次我导出 csv 时,发现文件里的数据数量和实际的对不上,数据库里大概有 10w+ 条数据,但导出来的只有 100 多条,这就奇怪了,我怀疑是哪里配置出了问题,但 DBeaver 导出的配置项就那几样,配置出问题又不大可能
后来我自己写了一个 Java 工具来导出数据,在批量处理数据时,程序提示执行 SQL 语句异常
ORA-01427:单行子查询返回多个行我立刻意识到问题所在——导出数据的 SQL 语句写的有问题。 SQL 中包含子查询,但子查询返回了多个结果集,所以执行 SQL 语句报错了
回到 DBeaver 。DBeaver 执行 SQL 语句时,它不会一次性查询出全部的数据,而是分页查询出一部分,所以就算 SQL 语句 / 数据有问题,前期也暴露不出来。当 DBeaver 导出数据时,遇到异常就会结束整个导出任务,并且没有报错提示,所以我只导出了100多条数据
既然发现了问题,那解决起来也很简单了,改 SQL 就行,尤其注意子查询