sql >> Database >  >> RDS >> Sqlserver

Bulk invoegen met behulp van opgeslagen procedure

Er is niets mis met uw opgeslagen procedurecode - het punt is:de BULK INSERT commando kan een bestandsnaam niet als variabele accepteren.

Dit werkt wel:

BULK INSERT ZIPCodes 
FROM  'e:\5-digit Commercial.csv' 
WITH 

maar dit werkt nooit - binnen een opgeslagen proces of niet:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv' 

BULK INSERT ZIPCodes 
FROM @filename
WITH 

Dus je kunt het gewoon niet op deze manier doen, helaas. U kunt overwegen uw BULK INSERT . op te bouwen statement als een string (met een vaste bestandsnaam) en voer het dan uit als dynamische SQL - maar ik zie niet echt een andere oplossing.

DECLARE @filepath nvarchar(500)
SET @filepath = N'e:\5-digit Commercial.csv'

DECLARE @bulkinsert NVARCHAR(2000)

SET @bulkinsert = 
       N'BULK INSERT ZIPCodes FROM ''' + 
       @filepath + 
       N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'

EXEC sp_executesql @bulkinsert


  1. Hoe de prestaties van MySQL te benchmarken met SysBench

  2. Wat is de beste manier om mijn opgeslagen procedures op de SQL-server te beheren?

  3. logging uitgebreidheid mysql 5.7

  4. MySQL max_user_connections versus max_connections