복붙노트

[SQL] 변수 파일 이름으로 대량 삽입

SQL

변수 파일 이름으로 대량 삽입

난 SQL 서버 2005를 사용하는 DB에 대량 삽입을 시도하고있다

아래는 코드입니다.

declare @path varchar(500) 
set @path = 'E:\Support\test.csv'; 

Create table #mytable( name varchar(max), class varchar(max), roll varchar(max) )

BULK INSERT #mytable FROM @path <-- Error line
WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); 
Go 
select * from #mytable
drop table #mytable

문제 : 문제는 내 파일 경로가 동적이다와 작동하지 않는 대신 하드 코딩의 변수에서 온다 작동 아래에 난 오류 라인을 변경하는 경우

 BULK INSERT #mytable FROM 'E:\Support\test.csv'; 

이 문제를 해결하는 방법을 알려 주시기 바랍니다

해결법

  1. ==============================

    1.동적 SQL을 사용해보십시오 :

    동적 SQL을 사용해보십시오 :

    declare @sql varchar(max)
    set @sql = 'BULK INSERT #mytable FROM ''' + @path + ''' WITH ...
    exec (@sql)
    
  2. ==============================

    2.

    DECLARE @path varchar(50) = 'D:\ARQUIVOS_CARGAS\CABOS\FILE.prn'
    DECLARE @SQL_BULK VARCHAR(MAX)
    SET @SQL_BULK = 'BULK INSERT #TAB FROM ''' + @path + ''' WITH
            (
            CODEPAGE = ''ACP'',
            FIRSTROW = 1,
            FIELDTERMINATOR = ''tab'',
            ROWTERMINATOR = ''0x0a'',
            KEEPNULLS
            )'
    
    EXEC (@SQL_BULK)
    
  3. from https://stackoverflow.com/questions/5547393/bulk-insert-with-variable-file-name by cc-by-sa and MIT license