Попытка выполнить массовую вставку в SQL 2014 Express, но получает сообщение об ошибке. Кажется, что процесс терпит неудачу при первом значении float таблицы, в которую он загружается.Массовая вставка сбой при первом поплавке
Я использую excel office 2013 и сохраняю как CSV с «,» delimitor. уже были удалены запятые с "_" перед обработкой Изменить мое расширение файла в формате 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
У вашего файла есть заголовки? это может быть то, что он пытается прочитать заголовок и вставить его в столбец float. –
в соответствии с Microsoft Атрибут FIRSTROW не предназначен для пропуска заголовков столбцов. Вывод заголовков не поддерживается инструкцией BULK INSERT. При пропуске строк SQL Server Database Engine смотрит только на терминаторы полей и не проверяет данные в полях пропущенных строк. –
Я переключил все в таблице на varchar и решил проблему с плавающей точкой, но теперь он жалуется на последний столбец Total_Losses – HDB