Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wstaw zbiorczo za pomocą procedury składowanej

Nie ma nic złego w kodzie procedury składowanej — chodzi o to:BULK INSERT polecenie nie może zaakceptować nazwy pliku jako zmiennej.

To działa:

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

ale to nigdy nie działa - w ramach zapisanego procesu lub nie:

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

BULK INSERT ZIPCodes 
FROM @filename
WITH 

Więc po prostu nie możesz tego zrobić w ten sposób, niestety. Możesz rozważyć utworzenie BULK INSERT jako ciąg znaków (ze stałą nazwą pliku), a następnie wykonać ją jako dynamiczny SQL - ale tak naprawdę nie widzę żadnego innego rozwiązania.

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. Jak odwoływać się do kluczy JSON zawierających znaki specjalne podczas korzystania z OPENJSON, JSON_QUERY i JSON_VALUE (SQL Server)

  2. Jak obliczyć procent za pomocą instrukcji SQL

  3. SQL Server 2008 Błąd logowania Windows Auth:Login pochodzi z niezaufanej domeny

  4. Automatyczna korekta planu w SQL Server

  5. Jak przekonwertować bazę danych Visual Foxpro na bazę danych SQL Server