SQL 无法将数据插入 Table

SQL Trouble Inserting Data into Table

这是我发布的第一个问题,但我坚信我的代码是正确的,错误显示状态

Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated.

我只是想获取要添加到 table 的信息,但我不知道我做错了什么。在此先感谢您的帮助。

USE master
GO

IF EXISTS(SELECT * FROM sys.databases WHERE name = 'DeepImpact2')
     DROP DATABASE DeepImpact2

CREATE DATABASE DeepImpact2
GO

USE DeepImpact2

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES 
          WHERE TABLE_NAME = 'yourTABLEname' AND TABLE_SCHEMA = 'dbo')
    DROP TABLE dbo.tblCountry, dbo.tblCrater;
GO

CREATE TABLE tblCountry
(
    CountryID INT IDENTITY(1,1)NOT NULL,
    CountryName VARCHAR(MAX) NULL,
    CountryCode VARCHAR(5) NULL,
)

CREATE TABLE tblCrater
(
    CraterID INT IDENTITY(1,1) NOT NULL,
    CraterName VARCHAR(MAX) NULL,
    CountryID INT NULL,
    Diameter DECIMAL(8,3)NULL,
    Age DECIMAL(8,3) NULL,
    CountryName VARCHAR(MAX) NULL,
    Latitude DECIMAL(9,6) NULL,
    Longitude DECIMAL(9,6) NULL,
    CraterRegion VARCHAR(MAX) NULL
)
GO

--ALTER TABLE tblCountry ADD PRIMARY KEY (CountryID)
--ALTER TABLE tblCrater ADD PRIMARY KEY (CraterID)
--GO

--ALTER TABLE tblCrater
--ADD FOREIGN KEY (CountryID)
--REFERENCES tblCountry (CountryID)
--GO

INSERT INTO tblCrater (CraterName, CraterRegion, CountryName, Diameter, Latitude, Longitude)
VALUES ('Boxhole', 'Northern Territory', 'Australia', 0.2, -22.6166666666667, 135.2),
       ('Campo del Cielo', 'Chaco', 'Argentina', 0.1, -27.6333333333333, -61.7),
       ('Henbury', 'Northern Territory', 'Australia', 0.2, -24.5666666666667, 133.133333333333),
       ('Kaali', 'Saaremaa', 'Estonia', 0.1, 58.4, 22.6666666666667),
       ('Macha', 'Sakha Republic', 'Russia', 0.3, 60.1, 117.583333333333),
       ('Morasko', 'Stare Miasto', 'Poland', 0.1, 52.4833333333333, 16.9),
       ('Rio Cuarto', 'Cordoba Province', 'Argentina', 4.5, -32.8783333333333, -64.2233333333333),
       ('Wabar', 'Rub al Khali desert', 'Saudi Arabia', 0.1, 21.5, 50.4666666666667),
       ('Tenoumer', 'Sahara Desert', 'Mauritania', 1.9, 22.9166666666667, -10.4083333333333),
       ('Meteor Crater', 'Arizona', 'United States', 1.2, 35.0333333333333, -111.016666666667),
       ('Xiuyan', 'Xiuyan', 'China', 1.8, NULL, NULL),
       ('Lonar', 'Maharashtra', 'India', 1.8, 19.9666666666667, 76.5166666666667),
       ('Agoudal', 'Atlas Mountains', 'Morocco', 3.0, 31.9833333333333, -5.5),
       ('Tswaing', 'Pretoria Saltpan', 'South Africa', 1.1, -25.4, 28.0816666666667),
       ('Zhamanshin', 'Kazakhstan', 'Kazakhstan', 14.0, 48.4, 60.9666666666667),
       ('Bosumtwi', 'Ashanti', 'Ghana', 10.0, 6.505, -1.40833333333333),
('Elgygytgyn','Chukotka Autonomous','Russia',18.0,67.5,172),
('Bigach','Kazakhstan','Kazakhstan',8.0,48.5666666666667,82.0166666666667),
('Karla','Tatarstan','Russia',10.0,54.9166666666667,48.0333333333333),
('Karakul','Pamir Mountains','Tajikistan',52.0,39.0166666666667,73.45),
('Vredefort','Free State','South Africa',300.0,-27,27.5),
('Sudbury','Ontario','Canada',250.0,46.6,-81.1833333333333),
('Chicxulub','Yucatan','Mexico',180.0,21.3333333333333,-89.5),
('Popigai','Siberia','Russia',100.0,71.65,111.183333333333),
('Manicouagan','Quebec','Canada',90,51.3833333333333,-68.7),
('Acraman South','Australia','Australia',90.0,-32.0166666666667,135.45),
('Morokweng','Kalahari Desert','South Africa',70.0,-26.4666666666667,23.5333333333333),
('Kara','Nenetsia','Russia',65,NULL,NULL),
('Beaverhead','Idaho and Montana','United States',60.0,NULL,NULL),
('Tookoonooka','Queensland','Australia',55.0,-27.1166666666667,142.833333333333),
('Charlevoix','Quebec','Canada',54.0,47.5333333333333,-70.3),
('Siljan Ring','Dalarna','Sweden',52.0,61.0333333333333,14.8666666666667),
('Karakul','Pamir Mountains','Tajikistan',52.0,39.0166666666667,73.45),
('Montagnais','Nova Scotia','Canada',45.0,42.8833333333333,-64.2166666666667),
('Araguainha','Central Brazil','Brazil',40.0,-16.7833333333333,-52.9833333333333),
('Chesapeake Bay','Virginia','United States',40.0,37.2833333333333,-76.0166666666667),
('Mjilnir','Barents Sea','Norway',40.0, 3.8,29.6666666666667),
('Puchezh-Katunki','Nizhny Novgorod Oblast','Russia',40.0,56.9666666666667,43.7166666666667),
('Saint Martin','Manitoba','Canada',40.0,51.7833333333333,-98.5333333333333),
('Woodleigh','Western Australia','Australia',40.0,-26.05,114.666666666667),
('Carswell','Saskatchewan','Canada',39.0,58.45,-109.5),
('Clearwater','West Quebec','Canada',36.0,56.2166666666667,-74.5),
('Manson','Iowa','United States',35.0,42.5833333333333,-94.55),
('Slate Islands','Ontario','Canada',30.0,486666666666667,-87),
('Yarrabubba','Western','Australia',30.0,-27.1666666666667,118.833333333333),
('Keurusselk','Western Finland','Finland',30.0,62.1333333333333,24.6),
('Shoemaker','Western Australia','Australia',30.0,-25.8666666666667,120.883333333333),
('Mistastin','Newfoundland','Canada',28.0,55.8833333333333,-63.3),
('Clearwater','East Quebec','Canada',26.0,56.0666666666667,-74.1),
('Kamensk','Southern Federal Dist','Russia',25.0,NULL,NULL),
('Steen River','Alberta','Canada',25.0,59.5,-117.633333333333),
('Strangways','Northern Territory','Australia',25.0,-15.2,133.583333333333),
('Tunnunik','Northwest Territories','Canada',25.0,72.4666666666667,-113.966666666667),
('Boltysh','Kirovohrad Oblast','Ukraine',24.0,48.9,32.25),
('Nordlinger','Ries Bavaria','Germany',24.0,48.8833333333333,10.5666666666667),
('Presquole','Quebec','Canada',24.0,49.7166666666667,-74.8),
('Haughton','Nunavut','Canada',23.0,75.3833333333333,-89.6666666666667),
('Lappajorvi','Western Finland','Finland',23.0,63.2,23.7),
('Rochechouart','France','France',23.0,45.825,0.783333333333333),
('Gosses Bluff','Northern Territory','Australia',22.0,-23.8166666666667,132.308333333333),
('Amelia Creek','Northern Territory','Australia',20.0,-20.9166666666667,134.833333333333),
('Logancha','Siberia','Russia',20.0,65.5166666666667,95.9333333333333),
('Obolon','Poltava Oblast','Ukraine',20.0,49.5833333333333,32.9166666666667)

SELECT * 
FROM tblCrater

您需要更改比例和精度:

CREATE TABLE tblCrater
(
CraterID INT IDENTITY(1,1) NOT NULL,
CraterName VARCHAR(MAX) NULL,
CountryID INT NULL,
Diameter DECIMAL(8,3)NULL,
Age DECIMAL(8,3) NULL,
CountryName VARCHAR(MAX) NULL,
Lattitude DECIMAL(38,18) NULL,       -- here
Longitude DECIMAL(38,18) NULL,       -- here
CraterRegion VARCHAR(MAX) NULL
);

DBFiddle Demo

注意:您应该以分号结束每个语句。

('Slate Islands','Ontario','Canada',30.0,486666666666667,-87), 中的 Big Honkin Value for Latitude (486666666666667) 可能是印刷错误,但它确实会导致您选择的数据类型出现问题。

提示:删除一半数据并重新运行代码。如果可行,则问题行在您删除的一半中,否则将剩余部分再次减半。