基于条件sqlserver的批量插入
我正在使用大容量插入将数据导入SQL Server表基于条件sqlserver的批量插入,sql,sql-server,bulkinsert,Sql,Sql Server,Bulkinsert,我正在使用大容量插入将数据导入SQL Server表 BULK INSERT MySampleDB.dbo.Sample FROM ''' + @location + ''' WITH ( FIRSTROW = 2, FIELDTERMINATOR = ''","'', ROWTERMINATOR = ''\n'', TABLOCK ) 我需要检查条件,比如列值是否为整数。如果它不是一个整
BULK INSERT MySampleDB.dbo.Sample
FROM ''' + @location + '''
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ''","'',
ROWTERMINATOR = ''\n'',
TABLOCK
)
我需要检查条件,比如列值是否为整数。如果它不是一个整数,那么我需要跳过插入的整个记录。当脚本理解它是否为整数时使用case
看在我看来,您不能在批量插入中执行此操作,但您可以通过以下步骤获得帮助 步骤1:首先,您可以向表中添加一个varchar数据类型列,以便将CSV列映射到此列 步骤2:您可以通过TRY\u CONVERT功能更新int列
CREATE TABLE Bulk_InsertTable
(ColImport VARCHAR(100) , ColINT INT)
GO
CREATE VIEW Viev_Bulk_InsertTable
AS SELECT ColImportVarchar
FROM Bulk_InsertTable
GO
BULK INSERT Viev_Bulk_InsertTable FROM 'C:\Test.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
TABLOCK
)
UPDATE Bulk_InsertTable
SET ColINT = TRY_CONVERT(INT, ColImport);
+--------------+-----------+
| ColImport | ColINT |
+--------------+-----------+
| 669165933 | 669165933 |
| 871543967AAA | NULL |
| 871543967AAA | NULL |
| 514321792 | 514321792 |
| 115456712 | 115456712 |
+--------------+-----------+