작동버젼 : 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 |