使用TPC-DS工具生成数据
1、下载工具
两种渠道
a、官网(建议直接跳过~)
地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp

在信息填写正确的情况下,无法下载。看网友的解答,需要用谷歌浏览器才能下载。尝试未果。
b、github上下载
地址: https://github.com/gregrahn/tpcds-kit.git
ps:官方的包生成sql的时候会报错,上面这个大神已经修复。
2、编译
操作环境:Ubuntu16
进入TPC-DS工具包所在目录,由于下载的是源码,需要编译后才能使用。
a、解压
unzip tpcds-kit-master.zip
b、编译
编译之前请确认依赖环境ok
ubuntu:
sudo apt-get install gcc make flex bison byacc git
CentOS/RHEL:
sudo yum install gcc make flex bison byacc git
tpcds-kit-master/tools make -f Makefile.suite
编译过程中报错:

make: yacc: Command not found。报错是因为yacc没有安装 。
安装yacc
sudo apt-get install -y byacc
再次编译
又报错对‘yy_create_buffer’未定义的引用。对C/C++不熟悉,搜索了一下也没有相关的解答。百思不得其解之下,换了个思路。可能是第一次编译报错生成的错误文件对第二次编译产生的影响。
于是删除解压后的目录,重新编译成功。

如果生成dsdgen和dsqgen且无报错,说明编译成功
ll *gen
3、生成数据
第一次使用这个工具我是一脸懵比的。因为官方的文档特喵的根本看不懂。回想一下,你碰到不熟悉的linux命令是怎么做的?man或者--help,对吧。这里也可以用--help。
先不着急生成数据,看一下帮助信息先。
./dsdgen --help

- DIR:数据存放目录。
- SCALE:数据量,以GB为单位。
- TABLE:生成哪张表的数据,一共有24张表哦。
- PARALLEL:生成的数据一共分为多少份,一般生成TB级数据才会用到。
- CHILD:当前数据是第几份,与PARALLEL配对使用。
- FORCE:强制写入数据。
常用的参数就上面几个。下面我们来生成1G包含所有表的数据。
./dsdgen -scale -dir ../data/

等待dsdgen程序正常退出后,1G数据需要2~3min左右,进入data目录查看生成的数据。
cd ../data

假如只想生成其中某一张表的数据呢?这就需要用到-table参数了,以web_returns表为例。
./dsdgen -scale -dir ../data -table web_returns
报错了,信息如下:

web_returns是子表,它是依赖于父表web_sales的。生成父表的时候也会同时生成子表,我们来验证一下。
./dsdgen -scale -dir ../data -table web_sales

说明一下,最终生成的数据量以少于scale值的。
dsdgen的用法暂时先总结到这里。
4、生成SQL
查询SQL使用dsqgen生成,主要用于测试数据仓库的性能,一共99个。详细用法可以用--help查看帮助信息。这里不做介绍直接生成。
./dsqgen -DIRECTORY ../query_templates/ -TEMPLATE "query1.tpl" -DIALECT netezza -FILTER Y > ../sql/query1.sql
-DIRECTORY:SQL模板的路径
-TEMPLATE:SQL模板的名称
-DIALECT:include query dialect defintions found in <s>.tpl
-FILTER:重定向到标准输出。
查看生成的SQL:

一共有99,每一个都要这样生成多费劲呀。来写个for循环一把生成所有的SQL。
shell版:
#!/bin/sh
for i in `seq `
do
./dsqgen -DIRECTORY ../query_templates/ -TEMPLATE "query${i}.tpl" -DIALECT netezza -FILTER Y > ../sql/query${i}.sql
done
Python3版:
#coding:utf-8
import os
print("generate query sql")
for i in range(1,100):
tpl = "query"+str(i)+".tpl"
qsql = "query" +str(i) +".sql"
#拼接命令
cmd = "./dsqgen -DIRECTORY ../query_templates/ "+"-TEMPLATE "+tpl+" -DIALECT netezza -FILTER Y > "+"../sql/"+qsql
#print(cmd)
#执行命令
os.system(cmd)
去sql目录下查看刚才生成的SQL:

这种情况下还是shell更快一点。
5、总结
- 通过TPC-DS,可以生成指定量级的数据。
- 碰到报错不要慌,先google或bing,不要用某度,原因你懂的。
- TPC-DS基本用法已经总结完了,但是实际操作中还有很多问题,比如:
- 我想要生成10T数据怎么搞?
- 怎么判断生成的数据是否正确呢?
- child和parallel怎么使用?
- 数据和SQL生成完了怎么测试?
- 。。。。。。
后面有时间再总结。
使用TPC-DS工具生成数据的更多相关文章
- 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?
原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复 ...
- 我写的一个ExcelHelper通用类,可用于读取或生成数据
读取或生成EXCEL数据的方法有很多,一般常见的有: 1.通过OFFICE EXCEL组件,优点:读取与生成EXCEL文件方便,缺点:服务器上必须安装OFFICE软件,且进程无法及时释放 2.通过第三 ...
- hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)
绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...
- 利用TPC-H为MYSQL生成数据
## 利用TPC-H为MYSQL生成数据 导言 这篇文章是看了joyee写的TPC-H数据导入MySQL教程以及另一篇网上的MySQL TPCH测试工具简要手册 后写的,有些内容是完全转载自以上两篇文 ...
- excel生成数据地图
在数据分析过程中,图表是一个十分重要的部分,通过图表可以清晰明了的说明一些数字特征.在众多数据分析图表中,数据地图是常用的一中分析图.在一般的数据分析中,excel已经可以满足绝大部分功能.在本文中, ...
- java 通过接口在后台管理器中生成数据
需求:测试人员在后台批量添加数据很麻烦,特别是针对一款商品配置了英语,还需要手动添加法语.俄语.阿拉伯语,很麻烦,但是因为没有项目组配合,做个小工具批量生成数据就只有自己去研究了 第一步:通过抓包工具 ...
- 使用FastReport报表工具生成报表PDF文档
在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...
- 使用FastReport报表工具生成标签打印文档
在我们实际开发报表的时候,我们需要按一定的业务规则组织好报表的模板设计,让报表尽可能的贴近实际的需求,在之前的随笔中<使用FastReport报表工具生成报表PDF文档>介绍了FastRe ...
- 创建基于ASP.NET core 3.1 的RazorPagesMovie项目(二)-应用模型类配合基架生成工具生成Razor页面
本节中,将学习添加用于管理跨平台的SQLLite数据库中的电影的类Movie.从ASP.NET core 模板创建的应用使用SQLLite数据库. 应用模型类(Movie)配合Entity Frame ...
随机推荐
- 使用signalr实现网页和微信公众号实时聊天(上)
最近项目中需要实现客户在公众号中和客服(客服使用后台网站系统)进行实时聊天的功能.折腾了一段时间,实现了这个功能.现在将过程记录下,以便有相同需求的同行可以参考,也是自己做个总结.这篇是上,用手机编辑 ...
- 高速上手C++11 14 笔记1
1 constexpr constexpr关键字可以让已经具备常量返回的函数运用于常量的位置. c++14起可以在函数内部使用局部变量.循环和分支等简单语句. 2 委托构造&继承构造 委托构造 ...
- C语言学习书单
1.C Primer Plus(第六版)(中文版)豆瓣详情 C Primer Plus 最大的缺点可能就是内容太细,对于C语言讲解极为细致,但对于Sequence Point等内容并没有详细讲解. ...
- 81、iOS本地推送与远程推送详解
一.简介 分为本地推送和远程推送2种.可以在应用没打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户石否同意,如果同意则正常使用:如果用户不同意则下次打开程序 ...
- 在JAVA中对于类,对象,继承,多态的看法
这是我第一次学高级语言.很抱歉选择了JAVA,目标是开发一款可以上线的APP. 类:是建立对象的一个模板,就是系列产品中的基础款图纸.只是图纸而已.不是产品. 对象:是一个可以操作的对象.新建一个对象 ...
- Javaweb 编解码流程
参考: https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/#N10263 https://www.cnblogs.com/ch ...
- 0723掰棒子记录--vue的数据渲染
问题1:想要在一个panel标签中添加一个图片,panel中有一个datalist属性.如何设计标签可以插入想要的图片. template: <panel :list="dataLis ...
- Python是一门什么样的语言
先做个总结:Python是一门动态解释型的强类型定义语言. 那何为动态?何为解释?何为强类型呢? 我们需要了解编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言这6个概念就可知晓. 编 ...
- 网络操作系统 第九章 DHCP服务器管理与配置
本章小结 本章介绍了DHCP服务器的基本概念,基本原理和主要功能,详细说明了Window是下DHCP服务器的安装配置和Linux下DHCP 服务器的安装配置,通过本章的学习.读者能够理解动态主机配置协 ...
- phantomjs的安装和使用链接
1.先下载phantomjs并解压2.将phantomjs的bin目录配置到环境变量中3.测试phantomjs,cmd下输入phantomjs进入 (按 Ctrl + c 组 合键退出和 phant ...