使用 BULK INSERT 和重新排序列将 .csv 文件插入 SQL 服务器

Insert .csv file into SQL Server with BULK INSERT and reorder columns

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

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

它很有效,但我有一个带有 AUTO INCREMENT 选项的 id 列。我想将插入的列重新排序到 SQL 服务器自动递增 Id 列。

如何使用 BULK 方法做到这一点?

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

正如我在评论中所说:你不能,批量插入只是将数据泵入,你不能以任何方式转换数据。您可以做的是批量插入暂存 table(s) 并使用插入语句来执行您需要做的事情。

你可以这样做:

-- 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;