【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成

这篇具有很好参考价值的文章主要介绍了【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述

  • IMDB数据库是一个很大的,被广泛使用的电影,电视节目和演员信息的数据库,它包括了有关电影、电视节目、演员、制作公司、编剧、导演等信息。IMDB数据集可以为电影评论、分类、预测以及其他机器学习任务提供有用的参考信息。
  • Join Order Benchmark(JOB)是一个数据库基准测试,旨在评估数据库优化器的能力,特别是在确定关系表之间连接顺序方面。该基准测试涉及多个关系表的连接,挑战数据库优化器在处理复杂查询时进行最佳加入顺序决策的能力。论文链接:http://www.vldb.org/pvldb/vol9/p204-leis.pdf

join order benchmark(JOB)查询获取

IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成:

join order benchmark(JOB)-github-含有安装教程

进入github,需要查询语句直接下载即可:

【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成

注意,代码里有给出IMDB数据集的下载,但是第二步的网站链接失效了,所以用其它方法导入:

【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成

IMDB导入数据到PG

数据集 TPC-H、TPC-DS、IMDB的导入使用

(1)下载CSV等文件

下载 imdb.tgz,放置到到某个路径,记住该路径,后面有用。作者这里放置在/var/lib/pgsql/benchmark

接着,解压imdb.tgz:

tar -zxvf imdb.tgz

【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成

以下命令都需要进入psql后运行:

(2)psql进入PG,创建数据库:

CREATE DATABASE imdbload;

使用imdbload数据库:

\c imdbload

(2)执行sql脚本创建,注意讲前面的路径修改为imdb.tgz的放置路径:

\i /var/lib/pgsql/benchmark/schematext.sql;

(3)导入数据,注意讲前面的路径修改为imdb.tgz的放置路径:

\copy aka_name from '/var/lib/pgsql/benchmark/aka_name.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy aka_title from '/var/lib/pgsql/benchmark/aka_title.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy cast_info from '/var/lib/pgsql/benchmark/cast_info.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy char_name from '/var/lib/pgsql/benchmark/char_name.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy comp_cast_type from '/var/lib/pgsql/benchmark/comp_cast_type.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy company_name from '/var/lib/pgsql/benchmark/company_name.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy company_type from '/var/lib/pgsql/benchmark/company_type.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy complete_cast from '/var/lib/pgsql/benchmark/complete_cast.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy info_type from '/var/lib/pgsql/benchmark/info_type.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy keyword from '/var/lib/pgsql/benchmark/keyword.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy kind_type from '/var/lib/pgsql/benchmark/kind_type.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy link_type from '/var/lib/pgsql/benchmark/link_type.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy movie_companies from '/var/lib/pgsql/benchmark/movie_companies.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy movie_info from '/var/lib/pgsql/benchmark/movie_info.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy movie_info_idx from '/var/lib/pgsql/benchmark/movie_info_idx.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy movie_keyword from '/var/lib/pgsql/benchmark/movie_keyword.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy movie_link from '/var/lib/pgsql/benchmark/movie_link.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy name from '/var/lib/pgsql/benchmark/name.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy person_info from '/var/lib/pgsql/benchmark/person_info.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy role_type from '/var/lib/pgsql/benchmark/role_type.csv' with delimiter as ',' csv quote '"' escape as '\';
\copy title from '/var/lib/pgsql/benchmark/title.csv' with delimiter as ',' csv quote '"' escape as '\';

(4)检验数据(可有可无

导入后我们并不知道是否导入成功,可以写个shell脚本检验下。当然,如果嫌麻烦可以跳过,检查一两个表即可。

bash命令显示imdbload的所有表:

echo "\dt" | psql -t -A -d imdbload

如果显示的结果是:

public|aka_name|table|postgres
public|aka_title|table|postgres
public|cast_info|table|postgres
public|char_name|table|postgres
public|comp_cast_type|table|postgres
public|company_name|table|postgres
public|company_type|table|postgres
public|complete_cast|table|postgres
public|info_type|table|postgres
public|keyword|table|postgres
public|kind_type|table|postgres
public|link_type|table|postgres
public|movie_companies|table|postgres
public|movie_info|table|postgres
public|movie_info_idx|table|postgres
public|movie_keyword|table|postgres
public|movie_link|table|postgres
public|name|table|postgres
public|person_info|table|postgres
public|role_type|table|postgres
public|title|table|postgres

那么脚本需要分割|

#!/bin/bash

# 获取所有表格名称
TABLES=$(echo "\dt" | psql -t -A -d imdbload)

# 遍历每个表格并获取其记录数
for table in $TABLES; do
	table=$(echo "${table}" | cut -d '|' -f 2)
    count=$(echo "SELECT COUNT(*) FROM $table" | psql -t -A -d imdbload)
    echo "$table: $count"
done

如果只是movie_info,那么去掉第八行table=$(echo "${table}" | cut -d '|' -f 2)

测试:

vim test_imdb.sh,将完整的脚本写入,wq退出。然后sh test_imdb.sh,如果结果:

【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成

发现都有数据,那么说明导入数据成功!文章来源地址https://www.toymoban.com/news/detail-484803.html

到了这里,关于【IMDB】IMDB数据集导入PostgreSQL和join order benchmark(JOB)查询生成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive:聚合函数、GROUP BY、ORDER BY、LIMIT、执行顺序和JOIN、函数

    1.聚合函数 常见的聚合函数: Count、Sum、Max、Min和Avg 特点:不管原始数据多少条,聚合之后只有一条 Count(column)返回某列的行数,不包括NULL值 2.GROUP BY select中的字段要么是GROUP BY字段,要么是被聚合函数应用的字段 2.HAVING WHERE中无法出现聚合函数,所以有了HAVING WHERE是分组前

    2024年02月07日
    浏览(35)
  • SQL联表查询LEFT JOIN 数据去重复

    使用left join联表查询时,如果table1中的一条记录对应了table2的多条记录,则会重复查出id相同的多条记录。 解决方法: 将查询结果作为中间表,使用group by 进行去重 如果想对group by后的数据计算count,可以将查询结果作为中间表再计算count

    2024年02月11日
    浏览(33)
  • 业务数据LEFT JOIN 多表查询慢--优化操作

    首先你会想到,给表加索引,那么mysql会给主键自动建立索引吗? 会的,当然会。 在我们查询的业务表操作的时候,表业务数据庞大起来的时候,以及left join多的时候,甚至多表关联到几十张表的时候,查询是慢到不行。 这时候,只需要给表join查询的字段,及表结构,进行索

    2024年02月02日
    浏览(30)
  • 分布式数据库 Join 查询设计与实现浅析

    相对于单例数据库的查询操作,分布式数据查询会有很多技术难题。 本文记录 Mysql 分库分表 和 Elasticsearch Join 查询的实现思路,了解分布式场景数据处理的设计方案。 文章从常用的关系型数据库 MySQL 的分库分表Join 分析,再到非关系型 ElasticSearch 来分析 Join 实现策略。逐步

    2024年02月08日
    浏览(32)
  • postgresql导入导出数据库的一些问题

    就创建一个空库,啥也不用管,也不用添加 postgis 之类的扩展 如果是不同节点之间迁移,建议先创建之前的用户,如果没有之前的用户导入时会导致表所有者是postgres

    2024年02月17日
    浏览(35)
  • PostgreSQL数据导入导出【亲测】有图有真相

    pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。 有图有真相 导出 导入 1、导入整个数据库 2、导出某个表 压缩导入方法 3、一般用dump导出数据会比较大,推荐使用xz压缩 压缩方法 xz dum.sql 会生

    2024年02月10日
    浏览(29)
  • postgresql(一):使用psql导入数据库

    大家好,我是欧阳方超。 听说postgresql越来越流行了?psql是一个功能强大的命令行工具,用于管理和操作PostgreSQL数据库。它提供了一个交互式环境,允许用户执行SQL查询、创建和管理数据库、执行备份和恢复等操作。今天把公司的pg库迁到Windows机器上,在使用psql命令的过程

    2024年02月12日
    浏览(37)
  • 使用JOIN查询数据重复,怎么办?使用count统计怎么写SQL?

    比如现在有两个表tbl_a和tbl_b,如下: tbl_a id name 1 Bruce 2 Mike 3 Angela tbl_b id a_id :-: :-: 1 1 2 1 3 2 4 3 5 3 6 3 这时候我们如果联查的话,就会出现重复数据: 这样查出来的数据就会像下面这样: id name 1 Bruce 1 Bruce 2 Mike 3 Angela 3 Angela 3 Angela 去重的方法有三种: 一、distinct 二、group

    2024年02月16日
    浏览(40)
  • 【PostgreSQL】数据查询-概述

    检索或从数据库中检索数据的命令的过程称为查询。在 SQL 中,SELECT 命令用于指定查询。该命令的一般语法是SELECT 一种简单的查询形式为: 假设有一个名为table1的表,此命令将从table1中检索所有行和所有用户定义的列。(检索方法取决于客户端应用程序。例如*,psql 程序将

    2024年01月23日
    浏览(39)
  • PostgreSQL 查询数据表、视图信息

    --查询指定数据基表的列信息

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包