postgresql使用(一):TPC-H tools生成数据集并导入至postgre的数据库

本专题

  1. postgresql使用(一):TPC-H tools生成数据集并导入至postgre的数据库
  2. postgresql使用(二):在TPC-H的数据库上pgbench 压力测试
  3. postgresql使用(三):收集Postgresql数据库统计信息

 

一、安装PostgreSQL 9.5

参考:https://www.jianshu.com/p/dda94c4ffd52

同时记录一些自己遇到的坑和解决方法。

Ubuntu PostgreSQL安装和配置   参考:https://www.cnblogs.com/Siegel/p/6917213.html

1. 安装

sudo apt-get update
apt install postgresql

安装完成

编辑config /etc/postgresql/9.5/main/postgresql.conf

将下面 listen_addresses = 'localhost'注释去掉并改为  listen_addresses = '*'
# - Connection Settings -
#listen_addresses = 'localhost'         
# what IP address(es) to listen on;               
# comma-separated list of addresses;    
# defaults to 'localhost'; use '*' for all
...

将下面password_encryption = on 注释打开
#password_encryption = on

 

切换用户

su - postgres

遇到问题:

su:认证失败

解决方法:https://blog.csdn.net/xiaoxiali/article/details/17096591

按照上面的链接修改后,先 su 再 su - postgres,切换成功:

 

2、psql命令

安装完后会有PostgreSQL的客户端psql,通过 sudo -u postgres psql 进入,提示符变成: postgres=#  

在这里可用执行SQL语句和psql的基本命令。可用的基本命令如下:

\password:设置密码
\q:退出
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
psql

创建超级权限用户test,并设置密码0000(输入时是看不见的)。创建数据库testdb,并授权给用户test

sudo -u postgres createuser --superuser test;
sudo -u postgres psql
\password test;
0000
\q
sudo -u postgres createdb -O test testdb;

 

启动用户test下的testdb

psql -p 5432 -U test -d testdb

遇到问题:psql: FATAL: Peer authentication failed for user "test"

解决方法:

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

 # Database administrative login by Unix domain socket

local     all      postgres        peer

改为

# Database administrative login by Unix domain socket

local     all     postgres         trust

保存后执行下面的命令重新加载配置文件:

sudo /etc/init.d/postgresql reload
psql -U test -d testdb

出现下图,成功:

 

二、安装TPC-H工具生成数据集  

参考:

https://blog.csdn.net/zhenxue_xu/article/details/78306683

https://blog.csdn.net/tom_and_rocky/article/details/78814912

TPC-H下载地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp

嫌麻烦并且手头有积分,可以去CSDN下载区下载:https://download.csdn.net/download/iteapoy/10990998

填表格,会发送临时下载链接到邮箱,建议用gmail

 

填了邮箱后在邮箱里打开临时链接,开始下载

 

解压TPCH-tools 2.18.0_rc2(这里是我在win10上解压后的截图)

放到ubuntu中,在dbgen目录下找到并更改makefile.suite 生成dbgen

 

由于TPCH数据库参数没有PostgreSQL数据库选项,需要自己增加PG数据的脚本,在dbgen目录下更改tpcd.h文件

保存修改。在终端中cd到dbgen目录下,执行命令

make -f makefile.suite

执行成功后在dbgen目录下生成dbgen和qgen文件

运行dbgen生成.tbl数据。

在dbgen目录下执行

 ./dbgen -s 1 -f
  • -s 1 表示生成1G数据
  • -f 覆盖之前产生的文件

执行成功后会在dbgen目录下生成八个.tbl文件,可通过下列命令查看(在dbgen目录下)

 ls *.tbl 

看到产生八个tbl文件,也就是生成的数据集

在postgresql中建立tpch数据库,并创建表,相关表的创建语句可以从dss.ddl中复制

在dbgen文件夹下新建表 mysql.sql,把dss.ddl中的东西全部复制进去。

在用户test下的testdb数据库中建表

psql -p 5432 -U test -d testdb -f ./mysql.sql

参考:postgreSQL 命令行方式创建数据库及表

https://blog.csdn.net/hehong_78/article/details/6091011

 

导入数据

生成的tbl数据每一行的末尾会有一个“|”,导致PG数据库读取时报错,需要将最后一个“|”去掉,在dbgen目录下找到print.c, 注释145和147行,如下所示

 

在dbgen下新建/tbl文件夹,在dbgen文件夹中执行批处理

for i in `ls *.tbl`
doname="tbl/$i"echo $name`touch $name``chmod 777 $name`sed 's/|$//' $i >> $name;
done

导入数据

psql -p 5432 -U test -d testdb
copy region from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/region.tbl' with delimiter as '|' NULL '';
copy nation from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/nation.tbl' with delimiter as '|' NULL '';
copy partsupp from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/partsupp.tbl' with delimiter as '|' NULL '';
copy customer from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/customer.tbl' with delimiter as '|' NULL '';
copy lineitem from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/lineitem.tbl' with delimiter as '|' NULL '';
copy orders from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/orders.tbl' with delimiter as '|' NULL '';
copy part from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/part.tbl' with delimiter as '|' NULL '';
copy supplier from '/mnt/hgfs/share/database/2.18.0_rc2/dbgen/tbl/supplier.tbl' with delimiter as '|' NULL '';

给各表加约束条件

数据表的约束条件存放在dss.ri 文件中,复制并做相应更改在数据库中执行生成相关约束。

-- 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;

 

生成查询语句

复制qgen 和dists.dss 到queries ,cd到queries目录下执行

./qgen -d 1 >d1.sql

-d表示默认参数,1表示按照模板一生成sql语句

如下,生成d1.sql查询

批量生成.sql文件

for i  in {1..22}
do
name="d$i.sql"
echo $name
./qgen -d $i >$name
done

执行查询

psql -p 5432 -U test -d testdb -f ./d1.sql

生成查询结果

将查询结果导出到文件夹中

\o /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out
\i /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql
\o

最后,附录TPC-H(二):22个SQL语句说明(基于TPC-H2.17.3版本)

Q01 统计查询

Q02 WHERE条件中,使用子查询(=)

Q03 多表关联统计查询,并统计(SUM)

Q04 WHERE条件中,使用子查询(EXISTS),并统计(COUNT)

Q05 多表关联查询(=),并统计(SUM)

Q06 条件(BETWEEN AND)查询,并统计(SUM)

Q07 带有FROM子查询,从结果集中统计(SUM)

Q08 带有FROM多表子查询,从结果集中的查询列上带有逻辑判断(WHEN THEN ELSE)的统计(SUM)

Q09 带有FROM多表子查询,查询表中使用函数(EXTRACT),从结果集中统计(SUM)

Q10 多表条件查询(>=, <),并统计(SUM)

Q11 在GROUP BY中使用比较条件(HAVING >),比较值从子查询中查出

Q12 带有逻辑判断(WHEN AND/ WHEN OR)的查询,并统计(SUM)

Q13 带有FROM子查询,子查询中使用外联结

Q14 使用逻辑判断(WHEN ELSE)的查询

Q15 使用视图和表关联查询

Q16 在WHERE子句中使用子查询,使用IN/ NOT IN判断条件,并统计(COUNT)

Q17 在WHERE子句中使用子查询,使用<比较,使用了AVG函数

Q18 在WHERE子句中使用IN条件从子查询结果中比较

Q19 多条件比较查询

Q20 WHERE条件子查询(三层)

Q21 在WHERE条件中使用子查询,使用EXISTS和NOT EXISTS判断

Q22 在WHERE条件中使用判断子查询、IN、NOT EXISTS,并统计(SUM、COUNT)查询结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/61464.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL使用PgAdmin导入数据

1.创建列 要设置主键&#xff1a; postgresql常用函数&#xff1e;序列函数nextval():设置主键自动增长_野生汪嘤嘤嘤的博客-CSDN博客_nextval() 2.导入数据 3.其他方式参考 Postgresql导入csv数据_弱弱的小菜鸡的博客-CSDN博客_postgresql导入csvPostgresql导入数据的方法h…

PostgreSQL数据库导入EXCEL数据表

气象监测数据下载&#xff08;可下载最新及每日气象数据&#xff09;NOAA气象日监测数据均值计算python代码整理PostgreSQL数据库导入EXCEL数据表 PG数据库版本为10.14.1。 首先&#xff0c;需要在PG数据库创建一个table&#xff0c;把需要的字段都创建好。我这儿是在pgAdmin里…

TPCH生成数据导入Postgres数据库

目录 1. 数据生成工具下载在degen目录下修改makefile在degen目录下修改tpcd.h在degen目录下执行命令生成dbgen和qgen文件在degen目录下生成.tlb数据查看生成的数据 2. 数据导入到Postgres数据库中创建数据库建表查看创建的表表中导入数据查看数据导入给表加约束 3. 生成查询语句…

pg数据库导入TPCH数据

一、安装pg数据库 Linux环境PostgreSQL源码编译安装 在Linux上安装pg数据库可以参考这篇博客 在Windows上安装pg数据库在官网上有简易的安装包 二、下载TPCH数据 可以从官网中下载&#xff0c;但是要填写一大堆资料&#xff0c;还可能半天通不过。 可以直接从下方的百度网盘…

chatgpt赋能python:Python访问Gauss数据库实现高效数据管理

Python访问Gauss数据库实现高效数据管理 介绍 在数据管理和分析的大数据背景下&#xff0c;Gauss数据库作为开源数据库管理系统具有广泛的应用。而作为强大的程序语言&#xff0c;Python也成为数据科学家和工程师的首选工具之一。本文将介绍Python如何访问Gauss数据库&#x…

“GPT-4时代来临:为何这一代AI模型让GPT-3.5相形见绌?“

这个东西太强大了&#xff0c;GPT-4不同于ChatGPT先前的模型GPT-3.5&#xff0c;它不仅可以接收文字&#xff0c;同时还可以接受图片&#xff0c;但是图片还未开放给大众&#xff0c;从OpenAI的官方视频可以看到一段非常厉害的片段。 这个人用笔在本子上随便画了个自己网站的草…

微信聊天记录数据分析

目录 一、项目背景 二、数据准备 三、数据预处理及描述性统计 四、数据分析 1.聊天小时、日、月分别汇总分布图 2.聊天时间序列分布图 3.高频词汇统计 4.词云图展示 五、其它探索性分析 一、项目背景 2021年2月20日我和我女朋友第一次见面&#xff0c;之后开启了我们两个人的故…

个人电子邮箱注册申请哪个更好用?

在邮箱刚刚兴起的时候&#xff0c;我注册了个人邮箱&#xff0c;平常会保存一些家庭照片以及重要的工作邮件&#xff0c;最近在清理电脑时不小心清理了重要的邮件。于是我在百度上搜索了一些怎么可以恢复邮件的攻略&#xff0c;网友回复说升级TOM个人邮箱会员有误删恢复的功能。…

数据科学家赚多少?数据全分析与可视化 ⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 数据分析实战系列&#xff1a;https://www.showmeai.tech/tutorials/40 &#x1f4d8; AI 岗位&攻略系列&#xff1a;https://www.showmeai.tech/tutorials/47 &#x1f4d8; 本文地址&#xff1a;https://www…

人美声甜GPT,数学题哪里不会讲哪里

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 大模型的颠覆和变革&#xff0c;还只是开始。 ChatGPT一炮而红&#xff0c;重塑搜索、办公协同等多个场景和行业后&#xff0c;在线教育&#xff0c;被视为最重要的垂直场景——毕竟大语言模型展示出的能力&#xff0c;正是之前在线教育…

除了方文山,用TA你也能帮周杰伦写歌词了

周杰伦几乎陪伴了每个90后的青春&#xff0c;那如果AI写杰伦风格的歌词会写成怎样呢&#xff1f; 首先当然我们需要准备杰伦的歌词&#xff0c;这里一共收录了他的十几张专辑&#xff0c;近5000多行歌词。 原文档格式&#xff1a; 第一步数据预处理 def preprocess(data):&qu…

Selenium+Request+Beautifulsoup(周杰伦,林俊杰歌词爬取)

爬去JZ的歌词是为了做一个NlLP的任务&#xff0c;这里是在python上使用SelenuimRequestsBeautifulSoup实现的。使用selenuim是因为会涉及到动态网页抓取&#xff0c;又使用Request的原因是selenium对网页抓取时是要先进行加载的因此很耗时间&#xff0c;而Request不需要网页加载…

爬取QQ音乐(周杰伦)

首先呢&#xff0c;我们打开QQ音乐搜索周杰伦 https://y.qq.com/portal/search.html#page1&searchid1&remoteplacetxt.yqq.top&tsong&w周杰伦 一切做好准备后呢&#xff0c;我们需要找到歌曲清单&#xff0c;找到client_search&#xff08;客户端搜索&#xf…

【方向盘】轰动从未停止,感动从未消失。他,是周杰伦

不仅20年&#xff0c;不仅是青春。 本文已被https://yourbatman.cn收录&#xff1b;女娲Knife-Initializr工程可公开访问啦&#xff1b;程序员专用网盘https://wangpan.yourbatman.cn&#xff1b;公号后台回复“专栏列表”获取全部小而美的原创技术专栏 你好&#xff0c;我是方…

用Python分析周杰伦歌曲并进行数据可视化

大家好&#xff0c;今天我们用python分析下周杰伦歌曲。为了尽量完整地呈现从原始数据到可视化的过程&#xff0c;接下来我们会先简单讲解数据的预处理过程&#xff0c;即如何将 JSON 数据转化为Excel 格式&#xff0c;以及如何对周杰伦的歌曲进行分词。 本案例中的歌词数据来…

哪里可以免费听到周杰伦的歌曲?请看这里,教你免费听歌

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 小伙伴说想听周杰伦的音乐&#xff0c;有什么网站是可以免费听的&#xff0c;然后他发现咪咕音乐可以免费听周杰伦的歌曲&#xff0c;既然可以免费听&#xff0c;那…

计算机音乐谱大全告白气球,周杰伦《告白气球》钢琴曲谱

《告白气球》是由方文山作词&#xff0c;周杰伦作曲并演唱的歌曲&#xff0c;收录于周杰伦2016年6月24日发行的专辑《周杰伦的床边故事》中。2017年1月&#xff0c;这首歌曲获得Billboard Radio China 2016年度十大金曲奖。 创作背景 词作者方文山为周杰伦创作了《印地安老斑鸠…

周杰伦的歌里都有些啥?

周董的夕阳红粉丝团“被迫营业”&#xff0c;把蔡徐坤拉下了盘踞许久的微博超话人气榜第一&#xff0c;还一举破了亿。 当然&#xff0c;等我知道的时候&#xff0c;都战局已定了……作为当年会唱前三张专辑里所有歌曲的老粉&#xff0c;不想就这么躺赢&#xff0c;我今天也来给…

Python+pyecharts研究周杰伦歌词中的 秘密

一个朋友很喜欢周杰伦。 所以&#xff0c;前两天我跟别人去KTV&#xff0c;就唱的是“七里香”。 唱着唱歌&#xff0c;突然就好奇了起来。周杰伦的歌里&#xff0c;是不是还有很多的麻雀 后来发现&#xff0c;270首歌&#xff0c;140786个字&#xff0c;千言万语&#xff0…