2016-06-23 137 views
1

我正在編寫一些非常簡單的存儲過程,它們需要一個CSV並將它們導入數據庫。然而,我曾經遇到過一個語法錯誤:存儲過程/批量插入困難

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'FIELDTERMINATOR'.

我的SQL是非常簡單的,所以我不知道爲什麼我收到此錯誤:

CREATE PROCEDURE [dbo].[addEmployees] 
    @filePath NVARCHAR(150) 
AS 
    declare @sql varchar(max) 
    select @sql = 'BULK INSERT dbo.insuranceMidAm.employees FROM " '; 
    select @sql = @sql + @filePath; 
    select @sql = @sql + ' " WITH(
            FIRSTROW = 2 
            FIELDTERMINATOR = ",", 
            ROWTERMINATOR = "\n" 
           )'; 

    exec(@sql) 

EXEC dbo.addEmployees 'TEST_2016_employees.txt' 

我有嘗試過引用和標點符號的各種組合,但不斷收到錯誤。來源可能是什麼?

謝謝!文件圍繞

+4

你以後'FIRSTROW = 2' –

+0

由於錯過了逗號後面一個逗號,但即使我再補充一點,我收到如下:附近有語法錯誤','。 – KellyMarchewa

+0

使用'print @ sql'而不是'exec'並查看代碼出了什麼問題。例如空格'''''和''「'。 –

回答

1

你的雙引號,FIELDTERMINATORROWTERMINATOR應該是單引號(雙起來,因爲你在動態SQL):

FROM '' '; 
select @sql = @sql + @filePath; 
select @sql = @sql + ' '' WITH(
      FIRSTROW = 2 
      FIELDTERMINATOR = '','', 
      ROWTERMINATOR = ''\n'' 
     )'; 
1

你的報價是不正確的,應該是兩個人的未來彼此,而不是」你還缺少2