1

複数のファイルからSQLServerにデータを挿入しようとしています。これは私が使用しているコードです-

DECLARE @MyCounter int;
DECLARE @Fileprefix nvarchar, @Filesuffix nvarchar, @fullname nvarchar, @Counter_string nvarchar;

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 );
BULK INSERT GooglePatentsIndividualDec2012.dbo.patent
FROM  @fullname WITH  ( DATAFILETYPE = 'char', FIELDTERMINATOR = '^', ROWTERMINATOR =     '\n' );
SET @MyCounter = @MyCounter + 1;
END;  
GO

ただし、これらのエラーメッセージが表示されます-

  Incorrect syntax near @fullname. Expecting Integer, String, TEXT_LEX.....
  Incorrect syntax near DATAFILETYPE. Expecting SELECT or '('

上記のクエリで何が間違っていますか?

4

2 に答える 2

3

変数をファイル名として使用することはできません。MSDNで説明されている構文によると、定数である必要があります。

コマンドを作成し、EXECを使用して実行できます。

set @Command = 'BULK INSERT GooglePatentsIndividualDec2012.dbo.patent '
set @Command = @Command + 'FROM  '''+@fullname+''' WITH  ( '
set @Command = @Command + 'DATAFILETYPE = ''char'', '
set @Command = @Command ü 'FIELDTERMINATOR = ''^'', ROWTERMINATOR =     ''\n'' )'

EXEC (@Command)
于 2013-01-19T15:43:56.517 に答える
1

変数をテーブル名として使用することはできません。変数を使用する場合は、文字列を作成し、次のEXECような関数を使用する必要があります。

DECLARE @fullname nvarchar, @sql nvarchar
SET @sql = 'SELECT * FROM ' + @fullname+ ' WHERE id = 1'
EXEC(@sql)
于 2013-01-19T15:40:48.693 に答える