SQLServer2008で次の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節、または変更追跡コンテキスト節である場合、前のステートメントはセミコロンで終了する必要があります。
今、私は間違って何をしていますか:(?