首页 > 数据库 >TPCH-PostgreSQL生成数据集并导入数据表

TPCH-PostgreSQL生成数据集并导入数据表

时间:2023-12-27 18:55:45浏览次数:31  
标签:PostgreSQL dbgen 15 CHAR 数据表 tbl TPCH INTEGER NULL

1.数据集下载

TPC-H数据集: https://github.com/gregrahn/tpch-kit

2.解压安装

unzip  tpch-kit-master.zip

cd tpch-kit-master/dbgen/

make  -f  Makefile

通过上面命令,生成两个文件,分别是dbgen、qgen。分别用于产生数据和查询。

3.生成数据

##进入dbgen目录

cd tpch-kit-master/dbgen/

##生成8个tbl文件,生成以后修改八个文件的可执行权限,将这八个tbl文件放入创建好的文件目录tbl下(注意1表示1G数据量,0.1表示100M数据量)。

./dbgen  -s 1 -fchmod 777 tbl/*.tbl

或者单独生成每个表的数据(生成数据文件目前只能在dbgen目录中)

./dbgen -vf -s 0.01 -T r | tee -a region.tbl

./dbgen -vf -s 0.01 -T n | tee -a nation.tbl

./dbgen -vf -s 0.01 -T c | tee -a customer.tbl

./dbgen -vf -s 0.01 -T L | tee -a lineitem.tbl

./dbgen -vf -s 0.01 -T O | tee -a orders.tbl

./dbgen -vf -s 0.01 -T P | tee -a part.tbl

./dbgen -vf -s 0.01 -T S | tee -a partsupp.tbl

./dbgen -vf -s 0.01 -T s | tee -a supplier.tbl

 

##将生成的数据转移到/data/tpchdata

mv *.tbl  /data/tpchdata  ;

4.创建数据库和表

su - postgres

##连接数据库
psql  -h  192.168.80.131  -U postgres  

##创建数据

create  database  tpch

##进入数据库

\c  tpch

##创建表 (建表语句在dbgen下面的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);

5.导入数据

COPY region FROM '/data/tpchdata/region.tbl' DELIMITER '|' CSV HEADER;

COPY nation FROM '/data/tpchdata/nation.tbl' DELIMITER '|' CSV HEADER;

COPY customer FROM '/data/tpchdata/customer.tbl' DELIMITER '|' CSV HEADER;

COPY lineitem FROM '/data/tpchdata/lineitem.tbl' DELIMITER '|' CSV HEADER;

COPY orders FROM '/data/tpchdata/orders.tbl' DELIMITER '|' CSV HEADER;

COPY part FROM '/data/tpchdata/part.tbl' DELIMITER '|' CSV HEADER;

COPY partsupp FROM '/data/tpchdata/partsupp.tbl' DELIMITER '|' CSV HEADER;

COPY supplier FROM '/data/tpchdata/supplier.tbl' DELIMITER '|' CSV HEADER;

标签:PostgreSQL,dbgen,15,CHAR,数据表,tbl,TPCH,INTEGER,NULL
From: https://www.cnblogs.com/yeyuzhuanjia/p/17931209.html

相关文章

  • PostgreSQL数据库中插入数据并跳过重复记录
    概述:ONCONFLICT是将新数据插入现有表时处理唯一性冲突的一种方式快速预览1.DOUPDATESET:重复则更新2.DONOTHING:重复则跳过先创建表t_daily_stats、并且主键字段由serial_no、date组成,以及其他字段--创建设备每日统计表CREATETABLEt_daily_stats(seri......
  • 【专题】2023年中国数字金融调查报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34685原文出处:拓端数据部落公众号随着数字化转型的深入推进,新客户的增长速度已达顶峰,用户运营成为推动存量增长的关键手段。调查数据显示,相比去年,网上银行用户比例有所下降,而手机银行用户比例基本持平。阅读原文,获取专题报告合集全文,解锁文末249份......
  • 【专题】2023年中国6G产业研究报告PDF合集分享(附原数据表)
    报告链接:https://tecdat.cn/?p=33186原文出处:拓端数据部落公众号以5G技术的发展方向为基础,结合6G技术的理念,我们可以展望未来的发展方向。随着5G作为移动通信技术个人和企业服务的分界线的确立,未来更先进的移动通信技术必然会将目光聚焦在企业服务市场上,以获得更好的发展。阅读......
  • PostgreSQL的安装和卸载
    一、PostgreSQL的卸载查看版本号和系统类别:cat/etc/redhat-release如果是redhat/centos:(yuminstall)yum删除软件包:yumremovepostgresql*删除相关目录文件:rm-rf/var/lib/pgsqlrm-rf/usr/pgsql*删除pg相关用户组/用户userdel-rpostgresgroupdelpostgresrpm包安装的......
  • 使用pg_dump导出postgresql数据
    使用pg_dump导出postgresql数据参考:如何使用PostgreSQL进行数据迁移和整合?导出命令pg_dump-Uusername-ddbname-a--inserts-fbackup.sql-a只导出数据,不导出schema--inserts将数据转储为INSERT命令,而不是COPY点击查看代码pg_dumpdumpsadatabaseasatext......
  • 无涯教程-PostgreSQL - String函数
    PostgreSQL字符串函数主要用于字符串操作。下表详细介绍了重要的字符串函数-S.No.Name&描述1ASCII()返回最左边字符的数值2BIT_LENGTH()返回参数的长度(以位为单位)3CHAR_LENGTH()返回参数中的字符数4CHARACTER_LENGTH()CHAR_LENGTH()的同义词5CONCAT_WS......
  • 无涯教程-PostgreSQL - Numeric函数
    PostgreSQL数值函数主要用于数值运算和/或数学计算。下表详细介绍了数字函数-S.No.Name&描述1ABS()返回数值表达式的绝对值。2ACOS()返回数值表达式的反余弦值,如果该值不在-1到1之间,则返回NULL。3ASIN()返回数字表达式的反正弦值,如果值不在-1到1的范围内,则返回NU......
  • 无涯教程-PostgreSQL - ARRAY函数
    PostgreSQLARRAY_AGG函数用于将包含null的输入值连接到数组中。要了解ARRAY_AGG函数,请考虑将 COMPANY 记录为跟随-testdb#select*fromCOMPANY;id|name|age|address|salary----+-------+-----+-----------+--------1|Paul|32|California|......
  • 使用 PostgreSQL 16.1 + Citus 12.1 作为多个微服务的分布式 Sharding 存储后端
    在本教程中,我们将使用PostgreSQL16.1+Citus12.1作为多个微服务的存储后端,演示此类集群的样例设置和基本操作。Citus12.1实验环境设置Docker快速启动Citus分布式集群docker-compose.ymlversion:"3"services:master:container_name:"${COMPOSE_PROJECT......
  • 无涯教程-PostgreSQL - MIN函数
    PostgreSQLMIN函数用于在记录集中找出最小值的记录。要了解MIN函数,请考虑将表 COMPANY 记录为跟随-testdb#select*fromCOMPANY;id|name|age|address|salary----+-------+-----+-----------+--------1|Paul|32|California|200002|L......