2016-09-28 76 views
1

尝试在SQL 2014 Express中执行批量插入,但收到错误。似乎该进程在其上载的表的第一个浮点值上失败。首次浮动批量插入失败

我正在使用excel office 2013并将其另存为带有“,”分隔符的CSV。 处理前已经删除了 “_” 前处理 我的文件扩展名更改为一个txt任何逗号

错误:

Msg 4864, Level 16, State 1, Line 1 
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 7 (NEW_PARTS_TERM). 

导入示例文件是:

ID,DEALER_NUM,DEALER_NAME,NEW_WARRANTY_SKU_NUM,NEW_WARRANTY_SKU_NAME,NEW_PARTS_TERM,EARNING_TYPE,PROGRAM_TYPE,PURCHDT,FAILDT,CLAIMCNT,TOTAL_LOSSES 
1,1060,Officemax,189400,OM 2YR ADH PREM SVC $450-$549.99 P,24.00,U,SERVICE,4/1/2015,8/1/2015,1.00,341.16 
2,1060,Officemax,189400,OM 2YR ADH PREM SVC $450-$549.99 P,24.00,U,SERVICE,4/1/2015,9/1/2015,1.00,181.16 

*执行存储程序*

Exec [dbo].[BulkInsertFiles] 'Losses', 'C:\Users\hb\Desktop\FileUpload\', 'AllCNA_LossesDataThru_Aug-2016_Purch.txt' 

*存储过程代码*

ALTER PROCEDURE [dbo].[BulkInsertFiles] 
    -- Add the parameters for the stored procedure here 
     @INDEX nvarchar(20), 
     @PATH nvarchar(100), 
     @FILENAME nvarchar(50) 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Varaibles 
    DECLARE @FULLPath nvarchar(MAX) 
    DECLARE @QUERY nvarchar(MAX) 

    -- Insert statements for procedure here 
    SET @FULLPATH = '''' + @Path + @FILENAME +'''' 

    SET @QUERY = 'BULK INSERT ' + @Index + 
    ' FROM' + @FULLPATH + ' WITH 
    (
     FIRSTROW = 2, 
     FIELDTERMINATOR = '','', 
     ROWTERMINATOR = '''', 
     TABLOCK 
    )'; 
    --Print @query; 
    EXEC(@query); 

END 

*表模式*

CREATE TABLE [dbo].[Losses](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [DEALER_NUM] [nvarchar](200) NULL, 
    [DEALER_NAME] [nvarchar](200) NULL, 
    [UNDERWRITER] [nvarchar](50) NULL, 
    [NEW_WARRANTY_SKU_NUM] [nvarchar](200) NULL, 
    [NEW_WARRANTY_SKU_NAME] [nvarchar](200) NULL, 
    [NEW_PARTS_TERM] [float] NULL, 
    [EARNING_TYPE] [nvarchar](50) NULL, 
    [PROGRAM_TYPE] [nvarchar](200) NULL, 
    [PURCHDT] [date] NULL, 
    [FAILDT] [date] NULL, 
    [CLAIMCNT] [float] NULL, 
    [TOTAL_LOSSES] [float] NULL, 
PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
+0

你的文件是否有标题?它可能是它试图读取标题并将其插入浮动列。根据Microsoft的 –

+0

FIRSTROW属性不打算跳过列标题。跳过标题不受BULK INSERT语句支持。在跳过行时,SQL Server数据库引擎只会查看字段终止符,并且不会验证跳过行的字段中的数据。 –

+0

我把表中的所有内容都切换到了一个varchar,并且解决了float问题,但现在它正在抱怨最后一列Total_Losses – HDB

回答

0

问题与表和数据字段的数量,我匹配他们和固定我的数据。

不需要删除标题。