2014-09-03 2 views
0

Я хочу, чтобы массив вставлял данные файла в таблицу с столбцом идентификатора первичного ключа, но я получаю эту ошибку.Массовая вставка с первичным ключом Id

CREATE TABLE [dbo].[WorkDataLoad] 
(
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [RecordLine] [nvarchar](max) NULL, 

    CONSTRAINT [PK_WorkDataLoad] 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] TEXTIMAGE_ON [PRIMARY] 

Запрос:

truncate table WorkDataLoad 

BULK INSERT WorkDataLoad 
    FROM 'D:\NPfiles\TS082114.trn' 
    WITH (
     TABLOCK, 
     KEEPIDENTITY 
    ) 

Ошибка

Msg 4832, уровень 16, состояние 1, строка 4
Объемная нагрузка: неожиданный конец файла встречалось в файле данных ,

Msg 7399, Level 16, State 1, Line 4
Поставщик OLE DB «BULK» для связанного сервера «(null)» сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке.

Msg 7330, Level 16, State 2, Line 4
Невозможно получить строку от поставщика OLE DB «BULK» для связанного сервера «(null)».

+0

и ошибка «Массовая загрузка: в файле данных был обнаружен неожиданный конец файла». - Файл успешно завершен? какой тип файла это .trn-файл? – Axarydax

+0

Это текстовый файл с sql-командами или журналом транзакций в двоичном sql-сервере? – Axarydax

+0

Его файл транзакции, если я заменяю файл текстовым файлом, произошла такая же ошибка –

ответ

2

Держите таблицу, как это и создать представление (выберите все, кроме идентификатора (столбец первичного ключа))

CREATE VIEW [dbo].[VWWorkDataLoad] 
AS 
SELECT RecordLine 
FROM [dbo].[WorkDataLoad]; 

Теперь BULK INSERT должно выглядеть так:

BULK INSERT [dbo].[VWWorkDataLoad] FROM 'D:\NPfiles\TS082114.trn' 
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n'); 

После запуска этого оператора вы можете проверить свою таблицу, в которой должны быть записи с первичным ключом. Надеюсь, это поможет, это сработало для меня.

+0

Это работа, я полностью понимаю ваш ответ. благодаря –