TPC-H生成测试数据集-Ubuntu
使用TPC-H可以自动生成大量数据,下面介绍ubuntu中的使用方法。
1.下载TPC-H的生成工具
http://www.tpc.org/tpch/ 奉上链接
网盘链接:https://pan.baidu.com/s/1u3_bwZbyWKrFGqdVzV2_7g 密码:sgnw
2.解压原文件
3.修改makefile文件
进入dbgen目录
cd dbgen
复制makefile.suite到makefile
cp makefile.suite makefile
修改makefile文件
vim makefile
修改为如下内容(gcc要是小写的,因为这个问题百度了一小时左右-_-||)
4.执行make,dbgen命令生成表结构和数据
如果你之前生成过数据表,可以执行make clean先清除一下再执行以下命令。
make
执行dbgen,生成数据表,大小为2G。根据自己需要设定参数。
./dbgen -s 2
我们会发现dbgen目录里增加了许多文件,正是我们后续需要的。
5. 建表
dss.ddl文件里为建表语句,如下:
CREATE TABLE NATION ( N_NATIONKEY INTEGER NOT NULL,N_NAME CHAR(25) NOT NULL,N_REGIONKEY INTEGER NOT NULL,N_COMMENT VARCHAR(152));CREATE TABLE REGION ( R_REGIONKEY INTEGER NOT NULL,R_NAME CHAR(25) NOT NULL,R_COMMENT VARCHAR(152));CREATE TABLE PART ( P_PARTKEY INTEGER NOT NULL,P_NAME VARCHAR(55) NOT NULL,P_MFGR CHAR(25) NOT NULL,P_BRAND CHAR(10) NOT NULL,P_TYPE VARCHAR(25) NOT NULL,P_SIZE INTEGER NOT NULL,P_CONTAINER CHAR(10) NOT NULL,P_RETAILPRICE DECIMAL(15,2) NOT NULL,P_COMMENT VARCHAR(23) NOT NULL );CREATE TABLE SUPPLIER ( S_SUPPKEY INTEGER NOT NULL,S_NAME CHAR(25) NOT NULL,S_ADDRESS VARCHAR(40) NOT NULL,S_NATIONKEY INTEGER NOT NULL,S_PHONE CHAR(15) NOT NULL,S_ACCTBAL DECIMAL(15,2) NOT NULL,S_COMMENT VARCHAR(101) NOT NULL);CREATE TABLE PARTSUPP ( PS_PARTKEY INTEGER NOT NULL,PS_SUPPKEY INTEGER NOT NULL,PS_AVAILQTY INTEGER NOT NULL,PS_SUPPLYCOST DECIMAL(15,2) NOT NULL,PS_COMMENT VARCHAR(199) NOT NULL );CREATE TABLE CUSTOMER ( C_CUSTKEY INTEGER NOT NULL,C_NAME VARCHAR(25) NOT NULL,C_ADDRESS VARCHAR(40) NOT NULL,C_NATIONKEY INTEGER NOT NULL,C_PHONE CHAR(15) NOT NULL,C_ACCTBAL DECIMAL(15,2) NOT NULL,C_MKTSEGMENT CHAR(10) NOT NULL,C_COMMENT VARCHAR(117) NOT NULL);CREATE TABLE ORDERS ( O_ORDERKEY INTEGER NOT NULL,O_CUSTKEY INTEGER NOT NULL,O_ORDERSTATUS CHAR(1) NOT NULL,O_TOTALPRICE DECIMAL(15,2) NOT NULL,O_ORDERDATE DATE NOT NULL,O_ORDERPRIORITY CHAR(15) NOT NULL, O_CLERK CHAR(15) NOT NULL, O_SHIPPRIORITY INTEGER NOT NULL,O_COMMENT VARCHAR(79) NOT NULL);CREATE TABLE LINEITEM ( L_ORDERKEY INTEGER NOT NULL,L_PARTKEY INTEGER NOT NULL,L_SUPPKEY INTEGER NOT NULL,L_LINENUMBER INTEGER NOT NULL,L_QUANTITY DECIMAL(15,2) NOT NULL,L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,L_DISCOUNT DECIMAL(15,2) NOT NULL,L_TAX DECIMAL(15,2) NOT NULL,L_RETURNFLAG CHAR(1) NOT NULL,L_LINESTATUS CHAR(1) NOT NULL,L_SHIPDATE DATE NOT NULL,L_COMMITDATE DATE NOT NULL,L_RECEIPTDATE DATE NOT NULL,L_SHIPINSTRUCT CHAR(25) NOT NULL,L_SHIPMODE CHAR(10) NOT NULL,L_COMMENT VARCHAR(44) NOT NULL);
6. 插入数据
第4步生成了8个以tbl结尾的文件对应8张表中的数据,首先去除数据中每行末尾的‘|’,代码如下:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {string s;ifstream in;in.open("lineitem.tbl");ofstream out;out.open("lineitem1.tbl");if (in.is_open()) {while (getline(in, s)) {int len = s.length();int i = len-1;//将最后一个竖号去掉才能满足postgresql的数据读取if (s[i] == '|') s[i] = '\n';out << s;}}out.close();return 0;
}
接着通过copy命令导入数据
copy nation from '/usr/local/pgsql/sql/table/nation1.tbl' WITH DELIMITER AS '|';
copy part from '/usr/local/pgsql/sql/table/part1.tbl' WITH DELIMITER AS '|';
copy region from '/usr/local/pgsql/sql/table/region1.tbl' WITH DELIMITER AS '|';
copy partsupp from '/usr/local/pgsql/sql/table/partsupp1.tbl' WITH DELIMITER AS '|';
copy supplier from '/usr/local/pgsql/sql/table/supplier1.tbl' WITH DELIMITER AS '|';
copy customer from '/usr/local/pgsql/sql/table/customer1.tbl' WITH DELIMITER AS '|';
copy lineitem from '/usr/local/pgsql/sql/table/lineitem1.tbl' WITH DELIMITER AS '|';
copy orders from '/usr/local/pgsql/sql/table/orders1.tbl' WITH DELIMITER AS '|';
7.建立主外键关系
建立主外键关系要在插入数据后,否则一些数据会因为外键不存在无法插入,相信我。
-- For table REGION
ALTER TABLE REGION
ADD PRIMARY KEY (R_REGIONKEY);-- For table NATION
ALTER TABLE NATION
ADD PRIMARY KEY (N_NATIONKEY);ALTER TABLE NATION
ADD FOREIGN KEY (N_REGIONKEY) references REGION;COMMIT WORK;-- For table PART
ALTER TABLE PART
ADD PRIMARY KEY (P_PARTKEY);COMMIT WORK;-- For table SUPPLIER
ALTER TABLE SUPPLIER
ADD PRIMARY KEY (S_SUPPKEY);ALTER TABLE SUPPLIER
ADD FOREIGN KEY (S_NATIONKEY) references NATION;COMMIT WORK;-- For table PARTSUPP
ALTER TABLE PARTSUPP
ADD PRIMARY KEY (PS_PARTKEY,PS_SUPPKEY);COMMIT WORK;-- For table CUSTOMER
ALTER TABLE CUSTOMER
ADD PRIMARY KEY (C_CUSTKEY);ALTER TABLE CUSTOMER
ADD FOREIGN KEY (C_NATIONKEY) references NATION;COMMIT WORK;-- For table LINEITEM
ALTER TABLE LINEITEM
ADD PRIMARY KEY (L_ORDERKEY,L_LINENUMBER);COMMIT WORK;-- For table ORDERS
ALTER TABLE ORDERS
ADD PRIMARY KEY (O_ORDERKEY);COMMIT WORK;-- For table PARTSUPP
ALTER TABLE PARTSUPP
ADD FOREIGN KEY (PS_SUPPKEY) references SUPPLIER;COMMIT WORK;ALTER TABLE PARTSUPP
ADD FOREIGN KEY (PS_PARTKEY) references PART;COMMIT WORK;-- For table ORDERS
ALTER TABLE ORDERS
ADD FOREIGN KEY (O_CUSTKEY) references CUSTOMER;COMMIT WORK;-- For table LINEITEM
ALTER TABLE LINEITEM
ADD FOREIGN KEY (L_ORDERKEY) references ORDERS;COMMIT WORK;ALTER TABLE LINEITEM
ADD FOREIGN KEY (L_PARTKEY,L_SUPPKEY) references PARTSUPP;COMMIT WORK;
好啦,齐活儿!
TPC-H生成测试数据集-Ubuntu相关推荐
- 教你在Python中用Scikit生成测试数据集(附代码、学习资料)
原文标题:How to Generate Test Datasets in Python with Scikit-learn 作者:Jason Brownlee 翻译:笪洁琼 校对:顾佳妮 本文共17 ...
- caffe学习(五):cifar-10数据集训练及测试(Ubuntu)
简介 网站链接:CIFAR-10 CIFAR-10数据集包括由10个类别的事物,每个事物各有6000张彩色图像,每张图片的大小是32*32. 整个数据集被分成了5个训练集和1个测试集,各有10000张 ...
- [AssistantTool]_7_添加生成测试图的功能
[AssistantTool]_7_添加生成测试图的功能 创建时间:20200615 17:30:00 功能 生成测试图,并保存对应原始数据到文件中,用来给嵌入式设备测试输出原色是否正常的问题 支持的 ...
- 25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
转自:https://blog.csdn.net/wangyj1992/article/details/78387728 因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我 ...
- Maven之生成测试覆盖度的插件cobertura-maven-plugin的使用
摘要:Maven中可以通过使用插件检查一个项目的测试代码的覆盖度,这个插件就是cobertura-maven-plugin,这个插件如何使用我做了测试,现在记录一下! 一:首先在你的项目的pom.xm ...
- Python机器学习:多项式回归与模型泛化004为什么需要训练数据集和测试数据集
泛化能力:由此及彼能力 遇见新的拟合能力差 数据 #数据 import numpy as np import matplotlib.pyplot as plt x = np.random.unifor ...
- Python机器学习:KNN算法03训练数据集,测试数据集train test split
示例代码 首先引入相关包 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets import ...
- Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集
背景信息 在使用Python进行机器学习时,经常需要自己完成数据的预处理,本节主要实现对txt文本数据的读取,该文本满足如下要求: 每行为一条样本数据,包括特征值与标签,标签在最后 样本数据的特征值之 ...
- Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等
[Python学习笔记] 使用PIL,批量合成jpg+png图片,用于水印.合并图片,生成YOLO数据集+标注数据等等 起因:在了解很多关于YOLOv5的相关内容,于是尝试着去训练自己的游戏目标检测模 ...
最新文章
- [转]Java Os Properties
- 用c实现跨平台异常捕获机制
- Metasploit search命令使用技巧
- MongoDB 查询超时异常 SocketTimeoutException
- three.js两个点给线条加宽度_用感性的方式练习线条,凤尾花21,彩铅手绘教程...
- 算法训练 最长字符串 java
- java架构分层_java分层架构概念
- Celery框架简单实例
- [react] 写出React动态改变class切换组件样式
- 信息系统集成监理费收取标准_信息产业部信息系统工程监理与咨询服务收费参考标准Word1...
- 自制力宛若受到控制的火焰
- 教你用Python自制一张好看的指数估值图!这招很好用!
- Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(三)--Transformer应用的图像处理与视频处理的研究
- 机器学习kaggle案例:沃尔玛招聘 - 商店销售预测
- 【Paper】2021_Distributed sliding mode control for time-varying formation tracking of multi-UAV system
- python中if not是什么意思_python中if not x: 和 if x is not None: 和 if not x is None的使用和区别...
- SQL中DDL语句(数据表定义语言)
- 【博弈论】第二讲:纳什均衡的混合战略(有限数量战略)
- SSH介绍与神器Tabby
- 圖譜謎宮(2019年6月28日於鄂爾多斯)
热门文章
- 超链接静态资源下载中 download属性无效解决方案
- vivo分屏_不当学习机的照相机不是好手机:vivo分屏+Jovi助手,学习无压力
- 蚁群算法详解-解决TSP问题
- win10 下安装 neo4j
- 传智播客 python 高教产品_《PHP程序设计基础教程》 传智播客高教产品研发部 【正版电子纸书阅读_PDF下载】- 书问...
- 【操作系统】Linux系统中直接优化提升CPU性能(已解决)
- ISIJ 2022收官,中国初中生再展风采
- ubuntu使用ffmpeg把图片生成视频
- 动画制作可以选用哪些工具? | 万彩动画大师
- sql 按照天环比_sql server 获取同比或环比