从一个文件夹导入多个CSV文件到SQL Server

我有一个名为“转储”的文件夹 该文件夹由variouos .CSV文件组成。 文件夹位置是'C:\ Dump'

我想将这些文件的内容导入到SQL Server中。 我想要粗略的代码和正确的注释,以便我理解它。

我已经尝试了一些我在网上find的代码。 但是由于一些奇怪的原因他们还没有完全为我工作。


我想要的步骤是

第1步:将文件夹中的所有文件名复制到表中

第2步:遍历整个表并使用批量插入复制文件中的数据。


有人请帮助我在这一个。 非常感谢:)

--BULK INSERT MULTIPLE FILES From a Folder --a table to loop thru filenames drop table ALLFILENAMES CREATE TABLE ALLFILENAMES(WHICHPATH VARCHAR(255),WHICHFILE varchar(255)) --some variables declare @filename varchar(255), @path varchar(255), @sql varchar(8000), @cmd varchar(1000) --get the list of files to process: SET @path = 'C:\Dump\' SET @cmd = 'dir ' + @path + '*.csv /b' INSERT INTO ALLFILENAMES(WHICHFILE) EXEC Master..xp_cmdShell @cmd UPDATE ALLFILENAMES SET WHICHPATH = @path where WHICHPATH is null --cursor loop declare c1 cursor for SELECT WHICHPATH,WHICHFILE FROM ALLFILENAMES where WHICHFILE like '%.csv%' open c1 fetch next from c1 into @path,@filename While @@fetch_status <> -1 begin --bulk insert won't take a variable name, so make a sql and execute it instead: set @sql = 'BULK INSERT Temp FROM ''' + @path + @filename + ''' ' + ' WITH ( FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'', FIRSTROW = 2 ) ' print @sql exec (@sql) fetch next from c1 into @path,@filename end close c1 deallocate c1 --Extras --delete from ALLFILENAMES where WHICHFILE is NULL --select * from ALLFILENAMES --drop table ALLFILENAMES 

对于第1步也许你可以看看:

http://www.sql-server-performance.com/forum/threads/copying-filenames-to-sql-table.11546/

要么

如何使用SQL Server列出文件夹中的文件

然后步骤2

如何在T-SQL中进行大容量插入的variables转换?

HTH