如何使用批量插入根据文件扩展名导入文件?

Bri*_*els 3 sql sql-server import bulkinsert

我有一个文件夹,每小时创建一个新的日志文件.每次文件名都不同.如何基于任何具有扩展名.log的文件批量插入?这是我的代码

select * from [data_MaximusImport_t]
BULK
INSERT Data_MaximusImport_t
FROM 'C:\Program Files (x86)\DataMaxx\*.log'
WITH
(FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
) 
Run Code Online (Sandbox Code Playgroud)

现在我得到错误*.log"无法打开.操作系统错误代码123(文件名,目录名或卷标语法不正确.).

***这是我原始问题的编辑.我能够用这段代码找出文件名

DECLARE @Path varchar(256) = 'dir C:\datamaxx\*.log'
DECLARE @Command varchar(1024) =  @Path + ' /A-D  /B'
INSERT INTO myFileList
EXEC MASTER.dbo.xp_cmdshell @Command
SELECT * FROM myFileList
Run Code Online (Sandbox Code Playgroud)

现在我只需要弄清楚如何在路径中粘贴该名称.我应该将文件名作为变量吗?

RBa*_*ung 5

你需要动态SQL.

假设文件名已经存在myFileList,那么我就是这样做的:

DECLARE @sql As VARCHAR(MAX);
SET @sql = '';

SELECT @sql = @sql + REPLACE('
    BULK INSERT Data_MaximusImport_t
    FROM ''C:\Program Files (x86)\DataMaxx\*''
    WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'' );
    ', '*', myFileName) 
FROM    myFileList
WHERE   myfileName != '';

PRINT @sql;
EXEC(@sql);
Run Code Online (Sandbox Code Playgroud)