2015-11-03 34 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。完成遷移後,可以縮小規模。
相關問題