
# TPC-H数据生成
1. 从[官网](https://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp)获取TPC-H工具。
2. 登录ECS云服务器，执行如下命令创建TPC-H存放目录。 
   ```
   mkdir -p /data1/script/tpch-kit/tpch1000X
   mkdir -p /data2/script/tpch-kit/tpch1000X
   ```
   
   
3. 将获取的TPC-H工具上传到ECS的/data1/script/tpch-kit目录执行以下命令解压。 
   "tpch_3.0.1.zip"替换为实际的软件包名。
   ```
   cd /data1/script/tpch-kit && unzip tpch_v3.0.1.zip
   ```
   
   
4. 执行如下命令编译生成数据构建工具dbgen。 
   ![](https://support.huaweicloud.com/pwp-911-dws/public_sys-resources/notice_3.0-zh-cn.png)
   编译之前需要修改dbgen目录下的两个文件：makefile.suite和tpcd.h
   1. 修改makefile.suite文件。
      ```
      #makefile.suite的更改参数如下（103行-111行）：
      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 = POSTGRESQL     #程序给定参数没有postgresql ，修改tpcd.h 添加POSTGRESQL脚本
      MACHINE = LINUX
      WORKLOAD = TPCH
      ```
      
   
   2. 修改tpcd.h文件。
      ```
      //在tpcd.h文件增加如下语句：
      #ifdef POSTGRESQL
      #define GEN_QUERY_PLAN  "EXPLAIN"
      #define START_TRAN      "BEGIN TRANSACTION"
      #define END_TRAN        "COMMIT;"
      #define SET_OUTPUT      ""
      #define SET_ROWCOUNT    "LIMIT %d\n"
      #define SET_DBASE       ""
      #endif /* POSTGRESQL */
      $ cd TPC-H_Tools_v3.0.1/dbgen
      $ cp makefile.suite makefile
      $ make -f makefile
      $ cp -R /data1/script/tpch-kit/TPC-H_Tools_v3.0.1/ /data2/script/tpch-kit/
      ```
      
    
   
   
5. 登录ECS，执行如下命令生成TPC-H 1000X数据，本示例分两个数据盘同步生成TPC-H 1000x数据。 
   ![](https://support.huaweicloud.com/pwp-911-dws/public_sys-resources/notice_3.0-zh-cn.png)
   TPC-H 1000X数据文件总大小约1100GB，请确认ECS的磁盘空间足够。
   1. 进入**/data1/script/tpch-kit/TPC-H_Tools_v3.0.1/dbgen** 目录后，执行如下命令。
      ```
      for c in {1..5};do (./dbgen -s 1000 -C 10 -S ${c} -f > /dev/null 2>&1 &);done
      ```
      
   
   2. 进入**/data2/script/tpch-kit/TPC-H_Tools_v3.0.1/dbgen** 目录后，执行如下命令。
      ```
      for c in {6..10};do (./dbgen -s 1000 -C 10 -S ${c} -f > /dev/null 2>&1 &);done
      ```
      其中：
      - -s 指定数据规模，本例为1000。
      
      - -C 指定分成几个chunk，本例为10。
      
      - -S 指定当前是第几个chunk，此处不需修改。
       
    
   
   

6. 执行以下命令，判断数据文件的生成进度。也可以通过**ps ux\|grep dbgen** ，查看生成数据文件的进程是否退出。
   
   ```
   du -sh /data1/script/tpch-kit/TPC-H_Tools_v3.0.1/dbgen/*.tbl*
   du -sh /data2/script/tpch-kit/TPC-H_Tools_v3.0.1/dbgen/*.tbl*
   ```
   
   
7. 将TPC-H 1000X数据转移至指定目录。 
   ```
   mv /data1/script/tpch-kit/TPC-H_Tools_v3.0.1/dbgen/*.tbl* /data1/script/tpch-kit/tpch1000X
   mv /data2/script/tpch-kit/TPC-H_Tools_v3.0.1/dbgen/*.tbl* /data2/script/tpch-kit/tpch1000X
   ```
   
   
 
