작동버젼 : 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;
'프로그래밍 > MSSQL\스크립트' 카테고리의 다른 글
[MSSQL] 로그인과 유저 간의 연결 수정 (0) | 2012.04.30 |
---|---|
[MSSQL] 특정 계정으로 로그인된 모든 세션 Kill (0) | 2012.04.29 |
[MSSQL] IP String <-> IP Binary (0) | 2012.04.24 |
[MSSQL] DB의 모든 테이블의 Collation 변경 (0) | 2012.04.24 |
[MSSQL] Lock, Bock 조회 (0) | 2012.04.24 |