从一个文件夹导入多个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