프로그래밍/MSSQL\스크립트
[MSSQL] CSV 파일을 임시 테이블에 저장
Mr.Jo
2012. 4. 24. 10:49
작동버젼 : SQL Sserver 2000 이상
사용방법 : [CSV 파일 경로] 수정 후 실행
주의사항 : CSV파일의 첫 줄은 컬럼명이여야 함
설 명 : csv파일을 디비로 불러올 일이 제법 자주 있기에 자동화 시킨 스크립트
USE master; GO SET NOCOUNT ON; DECLARE @FilePath nvarchar(4000); SET @FilePath = '[CSV 파일 경로]'; IF OBJECT_ID('tempdb.dbo.FirstRow', 'U') IS NOT NULL DROP TABLE tempdb.dbo.FirstRow; CREATE TABLE tempdb.dbo.FirstRow ( CSV nvarchar(100) ); DECLARE @Query nvarchar(4000); SET @Query = ' BULK INSERT tempdb.dbo.FirstRow FROM ''' + @FilePath + ''' WITH ( FIRSTROW = 1 ,LASTROW = 1 ); '; EXECUTE sp_executesql @Query; SELECT @Query = ' IF OBJECT_ID(''tempdb.dbo.CSV'', ''U'') IS NOT NULL DROP TABLE tempdb.dbo.CSV; CREATE TABLE tempdb.dbo.CSV ( ' + REPLACE(CSV, ',', ' nvarchar(4000),') + ' nvarchar(4000) )' FROM tempdb.dbo.FirstRow; EXECUTE sp_executesql @Query; SET @Query = ' BULK INSERT tempdb.dbo.CSV FROM ''' + @FilePath + ''' WITH ( FIRSTROW = 2 ,FIELDTERMINATOR = '','' ,ROWTERMINATOR = ''\n'' ); '; EXECUTE sp_executesql @Query; IF OBJECT_ID('tempdb.dbo.#CSV', 'U') IS NOT NULL DROP TABLE #CSV; SELECT * INTO #CSV FROM tempdb.dbo.CSV; IF OBJECT_ID('tempdb.dbo.FirstRow', 'U') IS NOT NULL DROP TABLE tempdb.dbo.FirstRow; IF OBJECT_ID('tempdb.dbo.CSV', 'U') IS NOT NULL DROP TABLE tempdb.dbo.CSV; GO이제 CSV파일 내용이 #CSV임시 테이블에 저장되여 다음과 같이 사용 가능
SELECT * FROM #CSV;