使用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相关推荐

  1. 教你在Python中用Scikit生成测试数据集(附代码、学习资料)

    原文标题:How to Generate Test Datasets in Python with Scikit-learn 作者:Jason Brownlee 翻译:笪洁琼 校对:顾佳妮 本文共17 ...

  2. caffe学习(五):cifar-10数据集训练及测试(Ubuntu)

    简介 网站链接:CIFAR-10 CIFAR-10数据集包括由10个类别的事物,每个事物各有6000张彩色图像,每张图片的大小是32*32. 整个数据集被分成了5个训练集和1个测试集,各有10000张 ...

  3. [AssistantTool]_7_添加生成测试图的功能

    [AssistantTool]_7_添加生成测试图的功能 创建时间:20200615 17:30:00 功能 生成测试图,并保存对应原始数据到文件中,用来给嵌入式设备测试输出原色是否正常的问题 支持的 ...

  4. 25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块

    转自:https://blog.csdn.net/wangyj1992/article/details/78387728 因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我 ...

  5. Maven之生成测试覆盖度的插件cobertura-maven-plugin的使用

    摘要:Maven中可以通过使用插件检查一个项目的测试代码的覆盖度,这个插件就是cobertura-maven-plugin,这个插件如何使用我做了测试,现在记录一下! 一:首先在你的项目的pom.xm ...

  6. Python机器学习:多项式回归与模型泛化004为什么需要训练数据集和测试数据集

    泛化能力:由此及彼能力 遇见新的拟合能力差 数据 #数据 import numpy as np import matplotlib.pyplot as plt x = np.random.unifor ...

  7. Python机器学习:KNN算法03训练数据集,测试数据集train test split

    示例代码 首先引入相关包 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets import ...

  8. Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集

    背景信息 在使用Python进行机器学习时,经常需要自己完成数据的预处理,本节主要实现对txt文本数据的读取,该文本满足如下要求: 每行为一条样本数据,包括特征值与标签,标签在最后 样本数据的特征值之 ...

  9. Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等

    [Python学习笔记] 使用PIL,批量合成jpg+png图片,用于水印.合并图片,生成YOLO数据集+标注数据等等 起因:在了解很多关于YOLOv5的相关内容,于是尝试着去训练自己的游戏目标检测模 ...

最新文章

  1. [转]Java Os Properties
  2. 用c实现跨平台异常捕获机制
  3. Metasploit search命令使用技巧
  4. MongoDB 查询超时异常 SocketTimeoutException
  5. three.js两个点给线条加宽度_用感性的方式练习线条,凤尾花21,彩铅手绘教程...
  6. 算法训练 最长字符串 java
  7. java架构分层_java分层架构概念
  8. Celery框架简单实例
  9. [react] 写出React动态改变class切换组件样式
  10. 信息系统集成监理费收取标准_信息产业部信息系统工程监理与咨询服务收费参考标准Word1...
  11. 自制力宛若受到控制的火焰
  12. 教你用Python自制一张好看的指数估值图!这招很好用!
  13. Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(三)--Transformer应用的图像处理与视频处理的研究
  14. 机器学习kaggle案例:沃尔玛招聘 - 商店销售预测
  15. 【Paper】2021_Distributed sliding mode control for time-varying formation tracking of multi-UAV system
  16. python中if not是什么意思_python中if not x: 和 if x is not None: 和 if not x is None的使用和区别...
  17. SQL中DDL语句(数据表定义语言)
  18. 【博弈论】第二讲:纳什均衡的混合战略(有限数量战略)
  19. SSH介绍与神器Tabby
  20. 圖譜謎宮(2019年6月28日於鄂爾多斯)

热门文章

  1. 超链接静态资源下载中 download属性无效解决方案
  2. vivo分屏_不当学习机的照相机不是好手机:vivo分屏+Jovi助手,学习无压力
  3. 蚁群算法详解-解决TSP问题
  4. win10 下安装 neo4j
  5. 传智播客 python 高教产品_《PHP程序设计基础教程》 传智播客高教产品研发部 【正版电子纸书阅读_PDF下载】- 书问...
  6. 【操作系统】Linux系统中直接优化提升CPU性能(已解决)
  7. ISIJ 2022收官,中国初中生再展风采
  8. ubuntu使用ffmpeg把图片生成视频
  9. 动画制作可以选用哪些工具? | 万彩动画大师
  10. sql 按照天环比_sql server 获取同比或环比