我有一张 table
create table BD_VEHICLES_TEMP_1
(
CONTRACT_NO VARCHAR2(16) not null,
ELIMINATED_FLG VARCHAR2(1),
ELIMINATION_CODE VARCHAR2(2),
PUBLISHED VARCHAR2(1),
BD_GRP_ID VARCHAR2(10),
EMD NUMBER(8),
VALUATION_PRICE NUMBER(8),
DIVI VARCHAR2(2),
)
我做了一个对应的bean
并将其属性的值设置为
bean.setDIVI(row.getCell(27).getNumericCellValue()+"");
但是,在将 bean 插入数据库时,我收到以下错误
ORA-12899: value too large for column "AFSWEB"."BD_VEHICLES_TEMP_1"."DIVI" (actual: 4, maximum: 2)
我知道这与列的大小有关。 DIVI 的 Excel 工作表中的数据为 11,13,45,67.. 等等所有 2 位数字。
可能是什么原因?解决办法是什么?
提前致谢!
最佳答案
来自Cell.getNumericCell() javadocs你会看到它返回一个double
。您似乎正在尝试使用一种相当奇怪的技术将其转换为字符串,并且您选择的 double+""
方式很可能会生成长字符串,因为 double 通常在小数点后有很多数字!
根据您的表定义:
DIVI VARCHAR2(2),
我了解到您正在尝试将数字单元格转换为两位数字字符串。我不确定你为什么要这样做,而不是在数据库中存储一个INTEGER
,但我希望你有一个充分的理由......假设是这样,你应该用 DataFormatter 做一些事情喜欢
DataFormatter fmt = new DataFormatter();
String divi = fmt.formatCellValue(row.getCell(27).getNumericCellValue());
if (divi.length() > 2) {
throw new IllegalStateException("Row should contain a 2 digit number, found " + divi);
}
bean.setDIVI(divi);
关于java - Oracle 将 xls 中的行插入数据库给出 ORA-12899 : value too large for column "AFSWEB" ."BD_VEHICLES_TEMP_1" ."DIVI",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224893/