2015-11-03 37 views
1

我正在将数据从旧数据库迁移到新数据库.few列具有不同的数据类型。而不是浮动,十进制是在新的数据库。 我的查询之下,但它给错误:如何在另一个表中插入不同的数据类型

Arithmetic overflow error converting float to data type numeric. 

有没有什么办法来插入所有的数据没有任何问题

查询:

insert into [newdb].[dbo].[newtab](State,StationID,AlertLevel,WarningLevel,DangerLevel,NormalLevel,UpperWaterLevel,LowerWaterLevel,WaterLevel_StationCode,RainFall_StationCode,OneHourRainfall,TwoHourRainFall,FourHourRainfall,TwantyFourHourRain,Lattitude,Longitude,District,RiverBasin,StationType) 
Select State,Station_Name,ALERT,WARNING,DANGER,NORMAL,UPPER_WL,LOWER_WL,STID_WL,STID_RF,RF1HR,RF2HR,RF4HR,RF24HR,LATITUDE,LONGITUDE,DISTRICT,RIVER_BASSIN,StType from [olddb].[dbo].oldtab; 

数据类型

Olddb

STATE varchar(50) 
STATION_NAME varchar(50) 
MMIID int 
STATION_ID int 
ALERT float 
WARNING float 
DANGER float 
NORMAL float 
MAX_WL float 
MAIN_ID int 
UPPER_WL float 
LOWER_WL float 
STID_WL int 
STID_RF int 
RF1HR float 
RF2HR float 
RF4HR float 
RF24HR float 
LATITUDE decimal(7, 6) 
LONGITUDE decimal(9, 6) 
REAL_NAME varchar(50) 
DISTRICT varchar(50) 
RIVER_BASSIN varchar(50) 
position_wl int 
station_status int 
position_rf int 
FULLNAME varchar(70) 
station_update int 
rainfall_name varchar(70) 
TIMESTAMPS smalldatetime 
Lembangan int 
StType varchar(50) 

NEWDB

ID int 
StationID varchar(50) 
StationName varchar(100) 
District varchar(50) 
RiverBasin varchar(50) 
CrossSectionID varchar(50) 
LastUpdate datetime 
State varchar(50) 
CreatedBy varchar(50) 
CreationDate datetime 
Deletedby varchar(50) 
DeletionDate datetime 
Lattitude decimal(9, 6) 
Longitude decimal(9, 6) 
Status bit 
OneHourRainfall int 
TwoHourRainFall int 
FourHourRainfall int 
TwantyFourHourRain int 
NormalLevel decimal(7, 2) 
AlertLevel decimal(7, 2) 
WarningLevel decimal(7, 2) 
DangerLevel decimal(7, 2) 
StationType varchar(50) 
WaterLevelParameter varchar(1) 
NormalMin decimal(7, 2) 
NormalMax decimal(7, 2) 
ModerateMin decimal(7, 2) 
ModerateMax decimal(7, 2) 
HeavyMin decimal(7, 2) 
HeavyMax decimal(7, 2) 
RainfallParameter varchar(1) 
UpperWaterLevel decimal(7, 2) 
LowerWaterLevel decimal(7, 2) 
PostWL decimal(7, 2) 
PostRF decimal(7, 2) 
FlowParameter varchar(1) 
RainFall_StationCode varchar(50) 
WaterLevel_StationCode varchar(50) 
Flow_StationCode varchar(50) 
StationStatus varchar(10) 
WaterLevelStation varchar(10) 
ImageName varchar(50) 
ModifyBy varchar(50) 
ModifyDate datetime 
Spike15MinWL decimal(7, 2) 
Spike1HrWL decimal(7, 2) 
RainfallHigh decimal(7, 2) 
+0

也许您应该阅读此https://msdn.microsoft.com/en-us/library/ms187746.aspx –

+0

@lc。在select和insert语句中没有列是相等的 – vim

回答

2

的问题引起的,因为在新的数据库中的数据类型并不大enough.There 2种方式去了解这一点:

  1. 查找旧数据库中float/decimal/int字段的最大值,并确保新数据库中的数据类型足够。
  2. 将你的新数据库中的十进制列增加到一个足够高的类型,比如对于小数点18,4,如果它们现在是6,2或9,2。完成迁移后,可以缩小规模。
相关问题