一、下载TPC-H

下载地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp 。从这个页面中找到tpc-h,我下载的版本是v2.17.3。下载后会得到一个名为*-tpc-h-tool.zip的压缩包,使用unzip命令将压缩包解压并将解压后的文件夹重命名为tpch_2_17_3, 文件夹tpch_2_7_13结构如下图所示:

在Linux下将TPC-H数据导入到MySQL

操作主要在文件夹dbgen下进行。

二、修改makefile.suite

执行以下命令(注意当前的工作目录):

hadoop@sench-PC:~/Downloads/tpch_2_17_3/dbgen$ cp makefile.suite makefile
hadoop@sench-PC:~/Downloads/tpch_2_17_3/dbgen$ vi makefile

将makefile的第100行到第111行修改为如下代码:

################
## CHANGE NAME OF ANSI COMPILER HERE
################
CC      = gcc 
# Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
#                                  SQLSERVER, SYBASE, ORACLE, VECTORWISE
# Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS, 
#                                  SGI, SUN, U2200, VMS, LINUX, WIN32 
# Current values for WORKLOAD are:  TPCH
DATABASE= MYSQL
MACHINE = LINUX
WORKLOAD = TPCH

修改的地方为:将编译器设置为gcc,将WORKLOAD设为TPCH,以及给DATABASE、MACHINE、WORKLOAD赋值。

三、修改文件tpcd.h

在文件tpcd.h开头添加以下代码:

#ifdef MYSQL
#define GEN_QUERY_PLAN ""
#define START_TRAN "START TRANSACTION"
#define END_TRAN "COMMIT"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "limit %d;\n"
#define SET_DBASE "use %s;\n"
#endif

四、生成dbgen

执行以下命令:

hadoop@sench-PC:~/Downloads/tpch_2_17_3/dbgen$ make

执行完成后会在dbgen目录下发现一个可执行文件dbgen

五、生成.tbl数据文件

这一步要使用上一步生成的dbgen来生成数据,这些数据存储在8个表中(.tbl),执行以下命令:

hadoop@sench-PC:~/Downloads/tpch_2_17_3/dbgen$ ./dbgen -s 1

 -s -1表示生成1G的数据 (如果你之前曾经尝试过生成数据,最好先make clean,再重新make,接着到这步加上-f覆盖掉)。完成后我们使用 ls *.tbl 可以看到产生了8个tbl文件:

hadoop@sench-PC:~/Downloads/tpch_2_17_3/dbgen$ ls *.tbl
customer.tbl  nation.tbl  partsupp.tbl  region.tbl
lineitem.tbl  orders.tbl  part.tbl      supplier.tbl

查看.tbl文件可以看到文件中的数据以‘|’隔开(类似于csv)。

六、修改初始化脚本

tpch提供了两个脚本dss.ddl (DSS库初始化DDL脚本)和dss.ri (DSS数据表创建索引、外键脚本),这两个脚本不适用于MySQL,需要进行修改。

1、修改dss.ddl

在dss.ddl开头加上以下代码:

drop database tpch;
create database tpch;
use tpch;

修改后的dss.ddl如下:

 1 -- Sccsid:     @(#)dss.ddl    2.1.8.1
 2 drop database tpch;
 3 create database tpch;
 4 use tpch;
 5 
 6 CREATE TABLE NATION  ( N_NATIONKEY  INTEGER NOT NULL,
 7                             N_NAME       CHAR(25) NOT NULL,
 8                             N_REGIONKEY  INTEGER NOT NULL,
 9                             N_COMMENT    VARCHAR(152));
10 
11 CREATE TABLE REGION  ( R_REGIONKEY  INTEGER NOT NULL,
12                             R_NAME       CHAR(25) NOT NULL,
13                             R_COMMENT    VARCHAR(152));
14 
15 CREATE TABLE PART  ( P_PARTKEY     INTEGER NOT NULL,
16                           P_NAME        VARCHAR(55) NOT NULL,
17                           P_MFGR        CHAR(25) NOT NULL,
18                           P_BRAND       CHAR(10) NOT NULL,
19                           P_TYPE        VARCHAR(25) NOT NULL,
20                           P_SIZE        INTEGER NOT NULL,
21                           P_CONTAINER   CHAR(10) NOT NULL,
22                           P_RETAILPRICE DECIMAL(15,2) NOT NULL,
23                           P_COMMENT     VARCHAR(23) NOT NULL );
24 
25 CREATE TABLE SUPPLIER ( S_SUPPKEY     INTEGER NOT NULL,
26                              S_NAME        CHAR(25) NOT NULL,
27                              S_ADDRESS     VARCHAR(40) NOT NULL,
28                              S_NATIONKEY   INTEGER NOT NULL,
29                              S_PHONE       CHAR(15) NOT NULL,
30                              S_ACCTBAL     DECIMAL(15,2) NOT NULL,
31                              S_COMMENT     VARCHAR(101) NOT NULL);
32 
33 CREATE TABLE PARTSUPP ( PS_PARTKEY     INTEGER NOT NULL,
34                              PS_SUPPKEY     INTEGER NOT NULL,
35                              PS_AVAILQTY    INTEGER NOT NULL,
36                              PS_SUPPLYCOST  DECIMAL(15,2)  NOT NULL,
37                              PS_COMMENT     VARCHAR(199) NOT NULL );
38 
39 CREATE TABLE CUSTOMER ( C_CUSTKEY     INTEGER NOT NULL,
40                              C_NAME        VARCHAR(25) NOT NULL,
41                              C_ADDRESS     VARCHAR(40) NOT NULL,
42                              C_NATIONKEY   INTEGER NOT NULL,
43                              C_PHONE       CHAR(15) NOT NULL,
44                              C_ACCTBAL     DECIMAL(15,2)   NOT NULL,
45                              C_MKTSEGMENT  CHAR(10) NOT NULL,
46                              C_COMMENT     VARCHAR(117) NOT NULL);
47 
48 CREATE TABLE ORDERS  ( O_ORDERKEY       INTEGER NOT NULL,
49                            O_CUSTKEY        INTEGER NOT NULL,
50                            O_ORDERSTATUS    CHAR(1) NOT NULL,
51                            O_TOTALPRICE     DECIMAL(15,2) NOT NULL,
52                            O_ORDERDATE      DATE NOT NULL,
53                            O_ORDERPRIORITY  CHAR(15) NOT NULL,  
54                            O_CLERK          CHAR(15) NOT NULL, 
55                            O_SHIPPRIORITY   INTEGER NOT NULL,
56                            O_COMMENT        VARCHAR(79) NOT NULL);
57 
58 CREATE TABLE LINEITEM ( L_ORDERKEY    INTEGER NOT NULL,
59                              L_PARTKEY     INTEGER NOT NULL,
60                              L_SUPPKEY     INTEGER NOT NULL,
61                              L_LINENUMBER  INTEGER NOT NULL,
62                              L_QUANTITY    DECIMAL(15,2) NOT NULL,
63                              L_EXTENDEDPRICE  DECIMAL(15,2) NOT NULL,
64                              L_DISCOUNT    DECIMAL(15,2) NOT NULL,
65                              L_TAX         DECIMAL(15,2) NOT NULL,
66                              L_RETURNFLAG  CHAR(1) NOT NULL,
67                              L_LINESTATUS  CHAR(1) NOT NULL,
68                              L_SHIPDATE    DATE NOT NULL,
69                              L_COMMITDATE  DATE NOT NULL,
70                              L_RECEIPTDATE DATE NOT NULL,
71                              L_SHIPINSTRUCT CHAR(25) NOT NULL,
72                              L_SHIPMODE     CHAR(10) NOT NULL,
73                              L_COMMENT      VARCHAR(44) NOT NULL);
View Code

相关文章:

  • 2021-12-25
  • 2022-01-01
  • 2021-11-06
  • 2021-11-20
  • 2021-11-29
  • 2021-10-12
猜你喜欢
  • 2021-11-17
  • 2021-09-12
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2021-10-25
相关资源
相似解决方案