我正在编写一些非常简单的存储过程,这些存储过程采用CSV并将它们导入数据库。但是,我遇到了语法错误:
Msg 102,Level 15,State 1,Line 3
“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'
我尝试了各种引号和标点符号组合,但一直出错。消息来源可能是什么?
谢谢!
答案 0 :(得分:1)
文件FIELDTERMINATOR
和ROWTERMINATOR
周围的双引号应为单引号(因为您使用的是动态SQL,所以双倍加注):
FROM '' ';
select @sql = @sql + @filePath;
select @sql = @sql + ' '' WITH(
FIRSTROW = 2
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)';
答案 1 :(得分:1)
你的报价不正确,应该是两个'彼此相邻而不是"。你在2之后也错过了一个逗号。
FROM '' ';
select @sql = @sql + @filePath;
select @sql = @sql + ' '' WITH(
FIRSTROW = 2,
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)';