oracle_tpch导数据,TPCH数据导入postgresql教程

POSTGRESQL TPC-H测试

postgresql & tpc-h(dbgen)

TPC-H是TPC提供的一个benchmark,用来模拟一个现实中的商业应用,可以生成一堆虚构的数据,且自带一些查询,可以导入到各种数据库中来模拟现实需求,检查性能。

具体是怎样的数据见:http://www.tpc.org/tpch/spec/tpch4.16.0.pdf

1、做实验之前的配置

a、首先在mac下安装postgresql

终端命令

brew install postgresql -v

若出现Error: Cannot write to /usr/local/Cellar

可以输入以下命令进行解决

sudo chown -R $USER /usr/local

b、接着下载dbgen

在这个网站上下载

https://github.com/electrum/tpch-dbgen

解压后在根目录找到makefile.suite 进行修改

把103~112行左右改成这个样子

CC = GCC

# Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)

# SQLSERVER, SYBASE, ORACLE

# Current values for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS,

# SGI, SUN, U2200, VMS, LINUX, WIN32

# Current values for WORKLOAD are: TPCH

DATABASE= SQLSERVER

MACHINE = LINUX

WORKLOAD = TPCH

#

c、 接着在终端访问至该文件的根目录

输入make 就会发现该文件有dbgen文件生成

b43b23560f8a5739074770304227148a.png

d、在终端输入命令

./dbgen -s 1 -f

就会发现在文件夹下有tbl文件生成,其数据如下

5d59dc96198ec2b0c9c35d270b84ad09.png

2、创建数据库:

这里启动和关闭数据库的命令在mac的终端下运行,linux没试过

启动PostgreSQl

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

关闭 PostgreSQL:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

创建一个 PostgreSQL 用户

createuser username -P

Enter password for new role:

Enter it again:

上面的 username 是用户名,回车输入 2 次用户密码后即用户创建完成。更多用户创建信息可以 “createuser –help” 查看。

创建数据库

createdb dbname -O username -E UTF8 -e

上面创建了一个名为 dbname 的数据库,并指定 username 通ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq4xMr9vt2/4rXE07XT0NXfo6hvd25lcqOpo6zK/b7dv+K1xLHgwuujqGVuY29kaW5no6nKxyBVVEY4o6yyzsr9ICZsZHF1bzstZSZyZHF1bzsgysfWuLDRyv2+3b/i1rTQ0LLZ1/e1xMP8we7P1Mq+s/bAtKGjPC9wPgo8cD64/Lbgyv2+3b/itLS9qNDFz6K/ydLUICZsZHF1bztjcmVhdGVkYiAmbmRhc2g7aGVscCZyZHF1bzsgsum/tKGjPC9wPgo8cD7BrL3Tyv2+3b/iPGJyIC8+CnBzcWwgLVUgdXNlcm5hbWUgLWQgZGJuYW1lIC1oIDEyNy4wLjAuMTwvcD4KPHA+M6GitLS9qLHto6wgdHBjLWix7bXExKPKvbTmtKLU2mRzcy5kbGy1xM7EvP7Jz6Os08POxLG+seC8rcb3tPK/qjxiciAvPgo8aW1nIGFsdD0="这里写图片描述" src="http://www.it165.net/uploadfile/files/2016/0406/201604062001172155.png" title="" />

在创建的数据库中一一创建,创建出8张表

2db011aca26ef2591d583e3785d2e334.png

输入dt 查看所有表是否创建成功

6c48a0b8ad4344909e38343d9b735363.png

4、载入数据

注意!!!

需要先载入数据再进行添加主键和外键,否则添加主键、外键之后,再插入数据,无法插入,因为无法获得外键数据。

tbl生成的文件无法自动转化成postgresql需穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq1xMr9vt2jrNDo0qrQ3rjEo6y9q8O/0rvQ0NfuuvPSu7j2JnJzcXVvOw=="’去掉才能转化

原因英文资料上是这样写的

PostgreSQL requires that the delimiter should not appear at the end of every line

Postgresql数据库不允许最后有分隔符出现

#include

#include

#include

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] = '

';

out << s;

}

}

out.close();

return 0;

}

如此修改文件名执行8次生成tbl文件

430393b7590214b79ca00a97ed865ee3.png

接着从数据库中载入数据

120987bc919dffe349dc010616a421bc.png

5、添加外键、主键

载入数据后,就可以添加外键、主键

对每张表添加外键、主键,修改tpch-dbgen文件夹中的dss.ri(用文本编辑器打开),将dss.ri所有添加外键和主键的信息都按照以下修改,并注释掉图上的connect to tpcd

7c94401b1612598acc3b694e34308736.png

65f7b1b6a58ec4f0554f49af02ea32cb.png

如果是在linux下要先输入命令

sudo su 用户名

开启数据库

在mac下启动数据库

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

接着在终端执行命令 psql -f 文件路径 数据库名称

931dc75e739d86b441c8eea507102e67.png

就完成了

查看表中的信息是否修改

f16d3675cb4ff31214fbe3bacdee26cd.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值