首页 > 解决方案 > 从变量日期文件名批量插入 - 错误

问题描述

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

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"'

标签: sqlsql-servertsqlsql-server-2008sql-server-2012

解决方案


您不能在其中放置变量或表达式。您需要使用动态 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;

我强烈推荐:


推荐阅读