sql >> Databáze >  >> RDS >> Sqlserver

Hromadné vložení pomocí uložené procedury

S kódem uložené procedury není nic špatného – jde o to:BULK INSERT příkaz nemůže přijmout název souboru jako proměnnou.

Toto funguje:

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

ale to nikdy nefunguje - v rámci uloženého procesu nebo ne:

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

BULK INSERT ZIPCodes 
FROM @filename
WITH 

Takže takhle to bohužel udělat nemůžete. Můžete zvážit vytvoření BULK INSERT příkaz jako řetězec (s pevným názvem souboru) a poté jej spustit jako dynamický SQL - ale ve skutečnosti nevidím žádné jiné řešení.

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. Lepší způsob, jak spouštět více příkazů MySQL pomocí skriptu Shell

  2. PHP/MySQL Čas zobrazení od posledního přihlášení uživatele

  3. Auto_increment hodnoty v InnoDB?

  4. Převod čísla na datum v oracle