使用dbgen导入TPC-H数据至MySQL时PART表出现截断警告的解决方法
解决TPC-H PART表导入MySQL时P_RETAILPRICE字段数据截断警告
问题说明
用tpch-dbgen生成TPC-H的8张表,执行load data local infile命令将PART表导入MySQL时,出现大量1265 Data truncated for column 'P_RETAILPRICE'的警告。示例报错行的数据如下:
517|aquamarine rosy violet moccasin snow|Manufacturer#3|Brand#34|SMALL BURNISHED COPPER|30|WRAP CAN|1417.51|uses. |
使用的表定义来自tpch-create.sql,导入命令为:
load data local infile '/full-path/part.tbl' into table PART columns terminated by '|';
解决方法
1. 核查字段类型限制
先查看PART表中P_RETAILPRICE的字段定义:
DESCRIBE PART;
通常问题出在该字段被定义为DECIMAL(5,2),这个类型只能存储最大999.99的数值,而生成的1417.51超出了这个范围,导致数据被截断。
2. 修改字段类型适配数据范围
将P_RETAILPRICE的字段类型调整为支持更大数值的精度,比如DECIMAL(8,2),该类型可存储最大999999.99的数值,完全覆盖TPC-H生成的价格区间:
ALTER TABLE PART MODIFY COLUMN P_RETAILPRICE DECIMAL(8,2);
3. 重新执行导入
修改字段后,再次运行导入命令,即可消除截断警告:
load data local infile '/full-path/part.tbl' into table PART columns terminated by '|';
补充提示
TPC-H标准中P_RETAILPRICE的取值范围是1到10000,所以DECIMAL(8,2)完全够用,也可以根据需求调整为DECIMAL(10,2)来预留更多空间。
内容的提问来源于stack exchange,提问作者Ilonpilaaja
相关产品推荐
相关产品推荐

