SQL-使用tpch(tpc-H)对postgreSQL测试

觉得有用请留下赞和评价,谢谢~

1. 下载并且生产创建数据库所需文件

  1. 下载postgreSQL的dbgen(官网tpc.org或者Github(tpch-dbgen))
  2. 配置dbgen环境,我选择使用visual studio,参考这篇博客,需要配置(.net和C++桌面开发)
  • 打开后生成项目,在生产的Debug文件下我dbgen.exe用shell执行 .\dbgeb.exe -s 0.001 生成1MB数据

参数 -s scale表示规模,可以生产相应大小的数据,默认1GB,所以不要直接执行

会出现缺少dist.dss错误,在根目录下复制到debug下即可

  • 生成数据就在该文件夹下*.tbl

2. 创建数据表、导入数据以及建立约束

必须要先导入数据再创建约束,否则某些数据的外键不存在,出错

2.1 创建数据表

表定义语言在dss.ddl中,直接赋值到Query Editor即可

2.2 导入数据

使用命令行:

H:\postgreSQL\bin>.\psql.exe -h 127.0.0.1 -p 5432 -d TCPH -U postgres
用户 postgres 的口令:
psql (10.14)
输入 "help" 来获取帮助信息.

TCPH=# copy nation from 'G:\SQL\tbl\nation.tbl' WITH DELIMITER AS '|';
错误:  最后期望字段后有额外数据

ERROR:最后期望的数据有额外输入

原因:postgreSQl不允许最后有竖线,需要用脚本去掉,下面是去掉数据中最后竖线的python脚本,将.tbl表格放在同目录下即可

 
import os
files=os.listdir("./")
for file_name in files:
    if file_name.endswith(".tbl"):
        with open(file_name) as f:
            text = f.read()
            text=text.replace("|\n","\n")
            # text=text[:-1]
        os.remove(file_name)
        with open(file_name,"w") as f:
            f.write(text)

导入数据代码脚本:

copy lineitem from 'G:\SQL\tbl\lineitem.tbl' WITH DELIMITER AS '|';
copy nation from 'G:\SQL\tbl\nation.tbl' WITH DELIMITER AS '|';
copy orders from 'G:\SQL\tbl\orders.tbl' WITH DELIMITER AS '|';
copy part from 'G:\SQL\tbl\part.tbl' WITH DELIMITER AS '|';
copy partsupp from 'G:\SQL\tbl\partsupp.tbl' WITH DELIMITER AS '|';
copy region from 'G:\SQL\tbl\region.tbl' WITH DELIMITER AS '|';
copy supplier from 'G:\SQL\tbl\supplier.tbl' WITH DELIMITER AS '|';

由以下python脚本自动生成:

import os
files = os.listdir("./")
copy_scripts = []
for file in files:
    if file.endswith(".tbl"):
        table_name = file[:-4]
        fm = r"copy {} from 'G:\SQL\tbl\{}.tbl' WITH DELIMITER AS '|';".format(table_name, table_name)
        print(fm)

导入成功截图:会出现COPY+数字

2.2 建立约束

修改scheme的名字public为TPCD,

表约束语言在dss.ri中,写入Query Editor

TPCH scheme

参考

[TPCH 22条SQL语句分析](https://www.cnblogs.com/xibuhaohao/p/11413669.html

https://blog.csdn.net/qq_28842789/article/details/79098020?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值