我需要將幾千個數據文件加載到SQL Server表中。 因此,我編寫了一個存儲過程,只接收一個參數 - 文件名。 但是..以下不起作用..「編譯器」抱怨@FileName參數..它只需要簡單的字符串..就像'file.txt'。 在此先感謝。帶文件名參數的批量插入
Ilan。
BULK INSERT TblValues
FROM @FileName
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)
我需要將幾千個數據文件加載到SQL Server表中。 因此,我編寫了一個存儲過程,只接收一個參數 - 文件名。 但是..以下不起作用..「編譯器」抱怨@FileName參數..它只需要簡單的字符串..就像'file.txt'。 在此先感謝。帶文件名參數的批量插入
Ilan。
BULK INSERT TblValues
FROM @FileName
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
)
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);
這正是我所做的。謝謝! http://stackoverflow.com/questions/4050790/bulk-insert-using-stored-procedure – Ilan
什麼是SQL注入? – user441365
您是否在尋找一個純粹的SQL解決方案,或者是你可以使用C#/ VB? –
謝謝保羅!我已經找到了一些東西 http://stackoverflow.com/questions/4050790/bulk-insert-using-stored-procedure – Ilan
@IIan,如果你有答案請關閉這個問題,並且下次在提問之前搜索相似的問題一。 –