2016-10-03 10 views
1

BULK INSERTクエリのLASTROW引数をパラメータ化しようとしています。 SQL Serverにインポートするテキストファイル内の最後の行のデータには、テキストファイルの行数に関する情報が含まれています。そして、その数値を使用して、BULK INSERTクエリのLASTROW引数の値を設定します。Parameterize Microsoft SQL Serverのバルク挿入2014

テキストファイルの例:

メッセージ:私は上記のクエリを実行すると、私は、このエラーメッセージが表示されます

DECLARE @FilePath VARCHAR(500) 
SELECT @FilePath = 'C:\path\textfile.txt' 
DECLARE @file VARCHAR(MAX) 

SELECT @file = (SELECT * FROM OPENROWSET(BULK N'C:\path\textfile.txt', SINGLE_CLOB) AS Content) 

DECLARE @LastRow INT 
DECLARE @LastRow_String VARCHAR(10) 

SELECT @LastRow_String = (SELECT SUBSTRING(@file, CHARINDEX('EOF|', @file)+4, LEN(@file))) 
SELECT @LastRow = (SELECT CAST(@LastRow_String AS INT)) 

DECLARE @Query VARCHAR(MAX) 
SELECT @Query = ('BULK INSERT [Database].[dbo].[Table] FROM ''' + @FilePath + 
''' WITH (FIELDTERMINATOR = ''|'', ROWTERMINATOR = ''|\n'', LASTROW = ' + @LastRow + ')') 

20161003|3504|1360| 
20161003|3540|1441| 
EOF|2 

私がに取り組んでいますクエリ245、レベル16、状態1、行11
変換時にvarchar値 'BULK INデータ型intにFIELDTERMINATOR = '|'、ROWTERMINATOR = '| \ n'、LASTROW = 'WITH [C:\ path \ textfile.txt]から[テーブル]

助けてください!

+0

問題はLastRowが整数であることです。 Queryへの連結にはLastRow_Stringを使用する必要があります。空白が気になる場合は、ltrim(rtrim(@LastRow_String))を実行してください。 – Jayvee

+0

@Jayveeそれだけです!どうもありがとうございます! –

答えて

0

問題はLastRowが整数であることです。 Queryへの連結にはLastRow_Stringを使用する必要があります。空白が気になる場合は、ltrim(rtrim(@LastRow_String))を実行できます。

関連する問題