Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Sisipan massal menggunakan prosedur tersimpan

Tidak ada yang salah dengan kode prosedur tersimpan Anda - intinya adalah:BULK INSERT perintah tidak dapat menerima nama file sebagai variabel.

Ini berhasil:

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

tapi ini tidak pernah berhasil - dalam proc yang tersimpan atau tidak:

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

BULK INSERT ZIPCodes 
FROM @filename
WITH 

Jadi Anda tidak bisa melakukannya dengan cara ini, sayangnya. Anda dapat mempertimbangkan untuk membuat BULK INSERT pernyataan sebagai string (dengan nama file tetap) dan kemudian jalankan sebagai SQL dinamis - tetapi saya tidak benar-benar melihat solusi lain.

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. kesalahan sql dinamis:'CREATE TRIGGER' harus menjadi pernyataan pertama dalam kumpulan kueri

  2. .NET SqlDependency dengan banyak notifikasi vs. polling tingkat tinggi?

  3. Xampp MS SQL server PHP 5.6

  4. Cara Menjalankan Pemicu Hanya Saat Kolom Tertentu Diperbarui (SQL Server)

  5. Sql Server 2008 geografi Batasan ukuran LineString