使用BULK INSERT将.csv文件插入SQL Server并重新排序列

时间:2016-04-13 08:47:04

标签: sql asp.net sql-server bulkinsert

我创建了一个ASP.NET应用程序,我想从CSV文件中将数据插入到我的SQL Server中。我用这个SQL命令做到了:

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

它非常有效但我有一个AUTO INCREMENT选项的id列。我想重新排序插入列到SQL服务器增量自动Id列。

如何使用BULK方法执行此操作?

(当然,我不想手动编辑.csv文件:P)

1 个答案:

答案 0 :(得分: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;