Clickhouse 插入随机数据
1.为什么要随机数据
在测试或预生产环境中,我们需要数据来进行测试自己的sql等逻辑是否正确,需要使用数据,而从现网环境中拉取大量的数据又显得不切实际,所以我们需要在数据库中根据一定规则造出类似于现网数据的内容,供测试使用,下面是各种随机数类型的制造方式
2.不同数据类型的制造方式
2.1 String
select substring(reverse(base64Encode(randomString(10))), 3);
2.2 浮点型
select toDecimal64(rand(now()) / rand(0), 3);
2.3 整形
select rand();
如果想在一定范围内取值,可以使用
select rand()%78;
2.4 时间字段
本例展示的是规整后的时间字段,如下
select (202210*10000+(toInt32(substring(toString(rand()),1,3))%7+19)*100+(toInt32(substring(toString(rand()),1,3))%24))*100 as time;
2.5 随机生成ip地址
select IPv4NumToString(rand());
2.6 关联资源随机取值
如果想在一定数据范围内取值,我们可以创建资源表,然后随机取一列中的值
假设资源表 tag_name 中name一列,随机取值
Select name From tag_name Order By Rand() Limit 1 ;
2.7 指定插入的条数
insert into testdb.test_table
select
(((202210 * 10000) + (((toInt32(substring(toString(rand()), 1, 3)) % 7) + 19) * 100)) + (toInt32(substring(toString(rand()), 1, 3)) % 24)) * 100 AS time,
rand() data1,
round(rand()/300000,0) num,
substring(reverse(base64Encode(randomString(10))), 3) host
FROM numbers(100000);