从变量日期文件名批量插入-错误

时间:2018-11-13 13:46:21

标签: sql sql-server tsql sql-server-2008 sql-server-2012

我正在尝试插入文件名中包含日期时间的文本文件。

declare @V_SQL varchar(100)
set @V_SQL = (select REPLACE(REPLACE(CONVERT(VARCHAR,getdate()-1,106), ' ',''), ',',''))
BULK INSERT [dbo].[test] FROM '"E:\test_"+ @V_SQL +".txt"'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '0x0a'
)
GO

运行上述命令时,我收到以下消息-BULK INSERT [dbo].[test] FROM '"E:\test_"+ @V_SQL +".txt"'

1 个答案:

答案 0 :(得分:3)

您不能在其中放置变量或表达式。您需要使用动态SQL。

DECLARE @sql nvarchar(max) = N'BULK INSERT dbo.test FROM '''
  + 'c:\test_' 
  + REPLACE(CONVERT(char(11), DATEADD(DAY,-1,GETDATE()), 13),' ','') 
  + ''' WITH 
     (
       FIELDTERMINATOR = ''|'',
       ROWTERMINATOR = ''0x0a''
     );';

PRINT @sql;
--EXEC sys.sp_executesql @sql;

我强烈建议: