首页 > 解决方案 > 将多个 .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-serverbulkinsert

解决方案


推荐阅读