以tpc-ds_v2.13.0生成GPDB测试为例。 # 一、下载 ## 原版 原版tool请至 [TPC官网](#六、参考) 下载。境内因为google无法访问问题,可能无法下载,方法见:[TPC-DS工具下载方法](TPC-DS工具下载方法)。 ## 修订版 本文提供针对 GPDB SQL语法的修订版下载:![tpc-ds_oem](../../../../ff_internal_upload/archive/2021/tpc-ds_v2.13.0_oem.zip) # 二、编译 ```bash unzip tpc-ds_v2.13.0.zip cd v2.13.0rc1/tools make -f Makefile.suite ``` # 三、生成数据 以下命令生成1s数据,数据文件保持在 ../1s 目录: ```bash ./dsdgen -SCALE 1 -TERMINATE N -DIR ../1s ``` - TERMINATE:表示每行数据是否以分割符结尾。 # 四、生成查询SQL ## 原生版本 截至到最新的v2.13.0的原生版dsqgen报以下错误: ```bash ERROR: Substitution'_END' is used before being initialized at line 63 in ../query_templates/query1.tpl ``` 需要手动的去修改query\_templates目录下相应的模板,以query1.sql为例,需要增加\_END定义: ![image](../../../../ff_internal_upload/img/2020/image-20201230085709125.png) 或者,直接修改tempalte\_query/netezza.tpl,增加 define \_END=""; 定义。 生成查询,可以使用以下脚本: ```bash #!/bin/sh for i in `seq 1 99` do ./dsqgen -SCALE 1 -DIRECTORY ../query_templates/ -TEMPLATE "query${i}.tpl" -DIALECT netezza -FILTER Y -VERBOSE Y > ../query_1s/${i}.sql done ``` ## GPDB版本 因为原生工具生成的查询SQL,GPDB不支持,所以需要修改模板,使用tpc-ds\_oem版本,直接使用query\_templates\_gpdb作为模板即可。 # 五、问题 ## 文件编码 生成的数据文件基本上都是ASCII编码,但是其中的customer.dat文件不是ASCII编码,在加载时可能会报错。例如,GPDB加载报以下错误: ```bash ERROR: invalid byte sequence for encoding "UTF8": 0xd4 0x54 (seg2 slice1 10.10.0.5:6406 pid=538409) CONTEXT: External table customer_ext, line 28 of file gpfdist://localhost:9888/1s/customer.dat ``` 查看customer.dat文件编码: ```bash [ff@test-2 1s]$ file customer.dat customer.dat: ISO-8859 text ``` 转换编码方法: ```bash [ff@test-2 1s]$ iconv -f ISO-8859-1 -t UTF-8 customer.dat > customer.dat.new [ff@test-2 1s]$ file customer.dat.new customer.dat.new: UTF-8 Unicode text ``` # 六、参考 - [TPC](http://www.tpc.org/) - ![tpc-ds_oem](../../../../ff_internal_upload/archive/2021/tpc-ds_v2.13.0_oem.zip)