2

这是开头的语法(省略了分类数据)

BULK INSERT 
[dbName].[dbo].[data_200801] FROM '\\servername\wwwroot\path\Files\data_200904.csv' WITH 
      (
         FIELDTERMINATOR = ';',
         ROWTERMINATOR =  '\n'
      );

作为工作的步骤之一,这可以正常工作。我碰壁的地方是我需要使用 SQL 函数动态文件名,例如

文件名 = data_ & 年(GetDate()) & 月(GetDate()) & .csv

我似乎无法在我的工作中连接动态功能。

喜欢挑战的人可以帮助我吗?

谢谢

4

1 回答 1

1

创建一个存储过程,将其作为动态 sql 执行,使用您的文件名方法在字符串中构建命令。从作业中运行这个新的存储过程。

CREATE PROCEDURE MyBulkInsert
AS
DECLARE @Query   varchar(500)
SET @Query='BULK INSERT [dbName].[dbo].[data_200801] FROM ''\servername\wwwroot\path\Files\data_'+CONVERT(varchar(4),Year(GetDate()))+RIGHT('0'+CONVERT(varchar(2),Month(GetDate())),2)+'.csv'' WITH ( FIELDTERMINATOR = '';'', ROWTERMINATOR = ''\n'' );'
EXECUTE (@Query)
Go

从作业而不是批量插入命令运行该过程

于 2009-04-29T17:34:46.350 回答