sql-server - 将多个 .csv 文件批量插入到每个文件的表中
问题描述
我需要一个存储过程,它将多个 .csv 文件批量插入到 SQL Server 的表中。.csv 文件都位于一个文件夹中。.csv 文件以制表符分隔。我能够遍历文件夹并在名为 FileNames 的表中创建一条记录,其中包含每个文件。当它到达 BULK INSERT 代码时出现错误。
这是“-”附近的不正确语法错误。从 C:\Temp\CSV_FILES\FILE01-K.csv' 批量插入 FILE01-K
我的程序:
declare @filename varchar(255),
@path varchar(255),
@sql varchar(8000),
@cmd varchar(1000)
--get the list of files to process
SET @path = 'C:\Temp\CSV_FILES\'
SET @cmd = 'dir ' + @path + '*.csv /b'
--clear the FileNames table
DELETE FROM FileNames
INSERT INTO FileName(FileName)
EXEC Master..xp_cmdShell @cmd
UPDATE FileName SET FilePath = @path where FilePath is null
DELETE FROM FileNames WHERE FileName is null
--cursor loop
declare c1 cursor for SELECT FilePath,FileName FROM FileNames where FileName like '%.csv%' order by FileName desc
open c1
fetch next from c1 into @path,@filename
While @@fetch_status <> -1
begin
set @sql = 'BULK INSERT '+ Replace(@filename, '.csv','')+' FROM '+@Path+@filename+''')'
print @sql
exec (@sql)
fetch next from c1 into @path,@filename
end
close c1
deallocate c1
我搜索并找到了一些示例,包括我曾经尝试构建我的示例。
解决方案
推荐阅读
- sql - 是否可以在每天的特定时间为布尔语句设置一个计时器,从真到假,从假到真?
- java - 解决 Maven 中央存储库中的损坏源
- python - 如何使用 python 请求将文本提交到 textarea?
- svelte - svelte-i18n - Svelte Rollup 编译器警告:`this` 已被重写为 `undefined`
- javascript - OpenCV.js 不工作 vue.js (electron-builder)
- excel - 我试图创建带有名称但面临问题的新工作表
- unity3d - 我可以在 Unity 中的一个游戏对象上拥有多个精灵吗?
- java - 如何在java中的循环内使用迭代器初始化变量?
- android - 从继承自 ModuleWidget 的模块访问路由时出现问题
- node.js - 如何使用 Azure Functions 和 node.js 在 module.exports 之外发出 axios 请求?