我正在尝试在 SQL Server 2008 中执行以下 SQL-
DECLARE @sql nvarchar, @fullname nvarchar;
SET @fullname='1patents_corrected.csv';
SET @sql = 'BULK INSERT GooglePatentsIndividualDec2012.dbo.patent from ' + @fullname+ ' WITH ( DATAFILETYPE = "char", FIELDTERMINATOR = "^", ROWTERMINATOR = "\n" );'
EXEC(@sql)
但是我收到了这个错误——
消息 2812,级别 16,状态 62,第 1 行
找不到存储过程“B”。
我在这里做错了什么?
更新——我改变了查询,即。为每个 varchar 变量指定一个大小。现在代码是这样的——
DECLARE @MyCounter int;
DECLARE @Fileprefix nvarchar(1000), @Filesuffix nvarchar(1000), @fullname nvarchar(1000), @Counter_string nvarchar(1000), @sql nvarchar(1000);
SET @MyCounter = 1;
SET @Fileprefix= 'C:\Arvind_gpd\patents\';
SET @Filesuffix='data_corrected.csv';
WHILE (@MyCounter < 10)
BEGIN;
Set @Counter_string= Cast(@MyCounter AS varchar(1) );
Set @fullname = (@Fileprefix+ @Counter_string + @Filesuffix );
SET @sql = 'BULK INSERT GooglePatentsIndividualDec2012.dbo.patent from ' + @fullname+
' WITH ( DATAFILETYPE = "char", FIELDTERMINATOR = "^", ROWTERMINATOR = "\n" );'
EXEC(@sql);
SET @MyCounter = @MyCounter + 1;
END;
GO
但是我现在遇到了一个不同的错误-
Msg 102, Level 15, State 1, Line 1
'C:' 附近的语法不正确。消息 319,级别 15,状态 1,第 1 行关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。
现在我做错了什么:(?