使用 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;
我制作了一个 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;