Java Oracle将xls中的行插入数据库会给出ORA-12899:对于“列”而言,值太大;AFSWEB"&引用;BD“车辆温度1”&引用;DIVI“;
我有一张桌子Java Oracle将xls中的行插入数据库会给出ORA-12899:对于“列”而言,值太大;AFSWEB"&引用;BD“车辆温度1”&引用;DIVI“;,java,oracle,jdbc,apache-poi,poi-hssf,Java,Oracle,Jdbc,Apache Poi,Poi Hssf,我有一张桌子 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
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.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位数字
原因可能是什么?解决办法是什么
提前谢谢 尝试打印分配的值,以便查看传递到数据库的内容:
String value = row.getCell(27).getNumericCellValue()+"";
// or Integer.toString(row.getCell(27).getNumericCellValue())
System.out.println("'" + value + "'");
同时显示您的JDBC语句
它可能与Unicode有关吗?UTF16将使字符串的长度加倍。尝试打印指定的值,以便查看传递到数据库的内容:
String value = row.getCell(27).getNumericCellValue()+"";
// or Integer.toString(row.getCell(27).getNumericCellValue())
System.out.println("'" + value + "'");
同时显示您的JDBC语句
它可能与Unicode有关吗?UTF16将使字符串的长度加倍。从中,您将看到它返回一个double
。您似乎试图使用一种非常奇怪的技术将其转换为字符串,而您选择的double+“”
方式很可能会生成长字符串,因为double通常在小数点后有很多数字
从表定义中:
DIVI VARCHAR2(2),
我推测您正在尝试将数字单元格转换为两位数字符串。我不知道你为什么要这样做,而不是在数据库中存储一个整数,但我希望你有一个好的理由。。。。假设是这样的话,你应该做一些类似的事情
从中,您将看到它返回一个double
。您似乎试图使用一种非常奇怪的技术将其转换为字符串,而您选择的double+“”
方式很可能会生成长字符串,因为double通常在小数点后有很多数字
从表定义中:
DIVI VARCHAR2(2),
我推测您正在尝试将数字单元格转换为两位数字符串。我不知道你为什么要这样做,而不是在数据库中存储一个整数,但我希望你有一个好的理由。。。。假设是这样的话,你应该做一些类似的事情