1
我想參數化BULK INSERT查詢的LASTROW參數。 我輸入到SQL Server的文本文件中的最後一行數據包含有關文本文件中行數的信息。我打算使用該數字來填充BULK INSERT查詢的LASTROW參數的值。參數化Microsoft SQL Server 2014批量插入
文本文件的一個例子:
20161003|3504|1360|
20161003|3540|1441|
EOF|2
查詢我的工作:
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 + ')')
當我執行上面的查詢我收到此錯誤信息:
消息245,第16級,狀態1,第11行
轉換失敗轉換varchar值'BULK IN SERT [Database]。[dbo]。[Table] FROM'C:\ path \ textfile.txt'WITH(FIELDTERMINATOR ='|',ROWTERMINATOR ='| \ n',LASTROW ='爲數據類型int。
任何幫助表示讚賞!
問題是LastRow是一個整數;您可能需要使用LastRow_String來連接到Query;如果你關心的是空白,你可以做ltrim(rtrim(@LastRow_String)) – Jayvee
@Jayvee就是這樣!非常感謝! –