范围是8位,精度为2,即存6位整数,两位小数。
其实这样的问题你在oracle测试下number(2,1)就明白了,这么贴出来解决问题反而很慢。
NUMBER(8,2)
表示字段的数据类型
,有效位数是8,精确到小数点后两位。
default
表示默认值为0
1.常规Hibernate 映射。
integer 或者 int
int 或者 java.lang.Integer。
INTEGER
4 字节
long
long Long
BIGINT
8 字节
short
short Short
SMALLINT
2 字节
byte
byte Byte
TINYINT
1 字节
float
float Float
FLOAT
4 字节
double
double Double
DOUBLE
8 字节
big_decimal
java.math.BigDecimal。
NUMERIC
NUMERIC(8,2)8 位。
character
char Character String。
CHAR(1)
定长字符
string
String
VARCHAR
变长字符串
boolean
boolean Boolean。
BIT
布尔类型
yes_no
boolean Boolean。
CHAR(1) (Y-N)
布尔类型
true_false
boolean Boolean。
CHAR(1) (T-F)
布尔类型
2 、 Java 时间和日期类型的 Hibernate 映射。
映射类型
Java 类型
标准 SQL 类型
描述
date
util.Date 或者 sql.Date。
DATE
YYYY-MM-DD
time
Date Time
TIME
HH:MM:SS
timestamp
Date Timestamp。
TIMESTAMP
YYYYMMDDHHMMSS。
calendar
calendar
TIMESTAMP
YYYYMMDDHHMMSS。
calendar_date
calendar
DATE
YYYY-MM-DD
3 、 Java 大对象类型的 Hibernate 映射类型。
映射类型
Java 类型
标准 SQL 类型
MySQL 类型
Oracle 类型
binary
byte[]
VARBINARY( 或 BLOB)。
BLOB
BLOB
text
String
CLOB
TEXT
CLOB
serializable
Serializable 接口任意实现类。
VARBINARY( 或 BLOB)。
BLOB
BLOB
clob
java.sql.Clob
CLOB
TEXT
CLOB
blob
java.sql.Blob
BLOB
BLOB
BLOB
在程序中通过 Hibernate 来保存 java.sql.Clob 或者 java.sql.Blob 实例时,必须包含两个步骤:
1.在一个数据库事务中先保存一个空的 Blob 或 Clob 实例。
2.接着锁定这条记录,更新上面保存的 Blob 或 Clob 实例,把二进制数据或文本数据写到 Blob 或 Clob 实例中。
我只能说说报错,这是两个问题,最后的提示是“带着警告的成功导入”。也就是说导入是成功的,有很多数据是成功导入的,如果只有这些警告,那么就是有166975行数据没导入。
你的第一个报错是01438,这个的意思是: 值大于为此列指定的允许精度。个人觉得,应该是导入的数据中存在数据的长度或精度是现在的表达不到的,也就是说,现在的表的某一列比原表的长度短,比如原表是number(8,2)现在是number(7,2)或者现在是number(8,1)等等(最大可能是number字段,但是并不完全,字符也可能),要么是长度不足,要么是精度不足,解决这个问题的最好办法就是单张表另表导入(重命名)我记得imp文件可以只导入其中的某张表,所以这个应该可以实现,然后再合并两张表,这样可以查看到底是什么数据,或者可以找出imp文件中的建表语句(这个也简单,同样是重命名导入,只要1=2就行了),然后根据建表语句,修改现在的表的字段长度和精度,然后这部分数据应该就可以导入了。
第二个报错是PK_xj22这个约束的名字已经被用了,你看看现在的PK_xj22是不是和这个一样,如果一样,那么就完全没有任何问题,如果不一样,那么就只能用这个语句建一个其他名称的主键了。
步骤:注意第3步有两个方案,两个方案别混了。
1.加一新列
alter table tfee_feeapply modify (TYPEID_1 NUMBER(8,2));。
2.复制旧列到新列,可能会报错,精度不同,你可以定规则,比如四舍五入、截断。。。
update tfee_feeapply set TYPEID_1=TYPEID;。
3.删除旧列或者置空旧列
a: alter table tfee_feeapply drop column typeid;。
b: update tfee_feeapply set TYPEID_1=null;。
4.改新列名或者复制新列到旧列。
a: alter table tfee_feeapply rename column typeid_1 to typeid;。
b: update tfee_feeapply set TYPEID=TYPEID_1;。
5.如果从第3步开始选择了a方案,那已经完成工作了。
如果选择b方案,后面要删除新列。
b: alter table tfee_feeapply drop column typeid_1;。