sql >> Database teknologi >  >> RDS >> Sqlserver

Importer flere CSV-filer til SQL Server fra en mappe

--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. sp_executesql er langsom med parametre

  2. mySQL konverter varchar til dato

  3. Bedre at bruge markøradapter eller array-adapter

  4. PGError:FEJL:aggregater er ikke tilladt i WHERE-klausulen på en AR-forespørgsel af et objekt og dets har_mange objekter