Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Групово вмъкване чрез съхранена процедура

Няма нищо лошо в кода на вашата съхранена процедура - въпросът е:BULK INSERT командата не може да приеме име на файл като променлива.

Това наистина работи:

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

но това никога не работи - в рамките на съхранена процедура или не:

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

BULK INSERT ZIPCodes 
FROM @filename
WITH 

Така че просто не можете да го направите по този начин, за съжаление. Бихте могли да обмислите изграждането на вашето BULK INSERT израз като низ (с фиксирано име на файл) и след това го изпълнете като динамичен SQL - но всъщност не виждам друго решение.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Необходим е динамичен Pivot с Row_Number()

  2. Дефиницията на SSRS отчета е по-нова от сървъра

  3. Как да създам списък, разделен със запетая, използвайки SQL заявка?

  4. Версиониране на база данни на SQL Server

  5. не може да се актуализира профилна снимка с помощта на varbinary