前言
写在前头:避免使用掌控不了的工具。
最近我们在做数据库性能比对测试,使用的测试集是TPC-H
数据集。数据集已经生成了,就剩下导入的工作。现在记录一下最近的踩坑。
正文
1. 数据结构要求不一致
使用 adb postgres 的 COPY
命令从对象存储导入数据,老是报错 extra data after last expected column
,意思就是表的列,和数据的列没对上。
查找其他教程后发现:导入 TPC-H 数据 postgres 数据库时,需要把每一行最后的分隔符给去了。
最后的分隔符需要去了
2. SQL 执行时间太长会被自动 kill 掉
导入 tpch1000 数据集,最大的 lineitem 表又 1000G 大小的数据,一天执行不完。好家伙,adb pg,默认SQL执行 3 小时不出结果,就变成 timeout 了。
可以在设置一下对应的参数
timeout时间设置
3. 所使用的的账号没有对象存储上传文件的权限
我们适合阿里合作的,结果他们给我分配测试账号时,没分配上传完文件的权限。我这又不准备导入 tpch1000 数据了,准备生成 100G 的数据上传上去测,结果没权限上传。
(最后要到权限了)
4. 对象存储通过网页上传文件,文件最大只能是 5G 大小
我费劲巴力的生成了 100G 的tpch数据,切片设置的是 10
,结果最大文件是 7.5G。没办法,重新将切片改大,重新生成吧。
5. 上传之后查询到的数据,比实际的数据要多(致命)
我再次费劲巴力把所有数据上传到了 adb pg上,结果一查询:
select count(*) from tpch100.lineitem;
结果是:9亿条多数据!(正确的数据应该是 6亿多条数据 )
这多的 3000 多万怎么来的?
我以为是我多上传了重复数据。结果我把数据清空,一个分片一个分片传,好家伙:
结果,还是比实际的要多。(查询是3300万,应该是3000万)
我去!!!!!!!!!!!!!!!!!!!
不玩了,还是使用简简单单的 jdbc 导入数据吧,不搞的这复杂了。