gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:39:39 25 4
gpt4 key购买 nike

我有一个文件夹,每小时都会创建新的日志文件。每次文件名都不一样。如何仅根据扩展名为 .log 的任何文件批量插入?这是我的代码

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

现在我收到错误 *.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

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

最佳答案

为此您需要动态 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);

关于sql - 如何使用批量插入仅根据文件扩展名导入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com