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)
现在我只需要弄清楚如何在路径中粘贴该名称.我应该将文件名作为变量吗?
你需要动态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)
| 归档时间: |
|
| 查看次数: |
3186 次 |
| 最近记录: |