2016-04-13 2 views
1

Я создаю приложение ASP.NET, и я хочу вставить данные в свой SQL Server из файла CSV. Я сделал это с помощью этой команды SQL:Вставить CSV-файл в SQL Server с BULK INSERT и переупорядочить столбцы

BULK 
INSERT Shops 
FROM 'C:\..\file.csv' 
WITH 
(
    FIELDTERMINATOR = ';', 
    ROWTERMINATOR = '\n' 
); 

это довольно работает, но у меня есть столбцы идентификаторов с AUTO INCREMENT опцией. Я хочу изменить порядок вставленных столбцов на SQL-счетчик с автоматическим индексированием столбца Id.

Как это сделать с помощью метода BULK?

(конечно, я не хочу, чтобы редактировать файл .csv Мануалы: P)

ответ

3

Как я уже сказал в моем комментарии: Вы не можете, навалочная вставка только насосы данных, вы не можете преобразовать данные в любом случае. То, что вы можете сделать, это массовая вставка в промежуточную таблицу (ы) и использование инструкции insert, чтобы делать то, что вам нужно сделать.

Вы можете сделать это следующим образом:

-- Create staging table 
SELECT TOP 0 * 
INTO  Shops_temp 
FROM  Shops; 


-- Bulk insert into staging 
BULK INSERT Shops_temp 
FROM 'C:\..\file.csv' 
WITH 
(
    FIELDTERMINATOR = ';', 
    ROWTERMINATOR = '\n' 
); 


-- Insert into actual table, use SELECT for transformation, column order etc. 
INSERT INTO Shops(name, etc..) 
SELECT name 
,  etc.. 
FROM Shops_temp; 


-- Cleanup 
DROP TABLE Shops_temp;