在SQL中,如何将VARCHAR转换为STRING?

sam*_*moz 3 sql sql-server-2008-r2

我试图使用参数在SQL Server 2008 R2上执行BULK INSERT操作.但是,我遇到的问题是函数需要一个STRING,我将它传递给VARCHAR.我的SQL在下面.

DECLARE @filepath VARCHAR(30)
DECLARE @current_symbol VARCHAR(30)

DECLARE symbol_cursor CURSOR FOR
SELECT symbol FROM stocks.dbo.description WHERE 1=1

OPEN symbol_cursor;

FETCH NEXT FROM symbol_cursor INTO @current_symbol

WHILE @current_symbol is not null
BEGIN
SET @filepath = 'C:\Users\stkerr\Desktop\stockPricing\' + @current_symbol + '.prices'
BULK
INSERT stocks.dbo.pricing
FROM @filepath
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR=',',
    ROWTERMINATOR='\n',
    ORDER   ( [date], [open], high, low, [close],volume),
        ERRORFILE='C:\Users\stkerr\errors.txt'.
)

FETCH NEXT FROM symbol_cursor INTO @current_symbol
END 
GO
Run Code Online (Sandbox Code Playgroud)

当我执行SET @filepath语句时,问题就出现了.

有任何想法吗?

Mit*_*eat 5

为了在变量(@filepath)中指定文件BULK INSERT,您需要构造动态TSQL并执行它.

例如

DECLARE @str_command nvarchar(150)
SET @str_command = 'BULK INSERT [Customer_Sample] FROM ''' + @SourceFilePath + 
                   ''' WITH (formatfile = ''' + @FormatFilePath + 
                   ''', firstrow =' + cast(@RowNumber as nvarchar) + ')'
EXEC SP_EXECUTESQL @str_command
Run Code Online (Sandbox Code Playgroud)