2011-09-05 42 views
16

我需要將幾千個數據文件加載到SQL Server表中。 因此,我編寫了一個存儲過程,只接收一個參數 - 文件名。 但是..以下不起作用..「編譯器」抱怨@FileName參數..它只需要簡單的字符串..就像'file.txt'。 在此先感謝。帶文件名參數的批量插入

Ilan。

BULK INSERT TblValues 
FROM @FileName 
WITH 
(
FIELDTERMINATOR =',', 
ROWTERMINATOR ='\n' 
) 
+0

您是否在尋找一個純粹的SQL解決方案,或者是你可以使用C#/ VB? –

+0

謝謝保羅!我已經找到了一些東西 http://stackoverflow.com/questions/4050790/bulk-insert-using-stored-procedure – Ilan

+0

@IIan,如果你有答案請關閉這個問題,並且下次在提問之前搜索相似的問題一。 –

回答

28

The syntax for BULK INSERT statement是:

BULK INSERT 
    [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
     FROM 'data_file' 
    [ WITH 

所以,文件名必須是一個字符串常量。 爲了解決這個問題,請使用動態SQL:

DECLARE @sql NVARCHAR(4000) = 'BULK INSERT TblValues FROM ''' + @FileName + ''' WITH (FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'')'; 
EXEC(@sql); 
+1

這正是我所做的。謝謝! http://stackoverflow.com/questions/4050790/bulk-insert-using-stored-procedure – Ilan

+1

什麼是SQL注入? – user441365