데이터를 가져오거나 내보내기 위해 유니코드 네이티브 형식 사용

유니코드 네이티브 형식은 한 곳의 SQL Server 설치에서 다른 설치로 정보를 복사해야 하는 경우 유용합니다. 비문자 형식의 데이터에 네이티브 형식을 사용하면 문자 형식과 다른 데이터 형식 간의 불필요한 변환을 막고 시간을 절약할 수 있습니다. 모든 문자 형식의 데이터에 유니코드 문자 형식을 사용하면 다른 코드 페이지를 사용하는 서버 간에 데이터를 대량 로드할 때 확장 문자의 손실을 방지할 수 있습니다. 유니코드 네이티브 형식의 데이터 파일은 어떤 대량 가져오기 방법으로도 읽을 수 있습니다.

확장 또는 DBCS 문자를 포함하는 데이터 파일을 사용하여 SQL Server의 여러 인스턴트 사이에 대량의 데이터를 전송하는 경우 유니코드 네이티브 형식을 사용하는 것이 좋습니다. 비문자 데이터의 경우 유니코드 네이티브 형식은 네이티브(데이터베이스) 데이터 형식을 사용합니다. char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max) 및 ntext와 같은 문자 데이터의 경우 유니코드 네이티브 형식은 유니코드 문자 데이터 형식을 사용합니다.

유니코드 네이티브 형식의 데이터 파일에 SQLVARIANT로 저장된 sql_variant 데이터는 char 및 varchar 값이 nchar 및 nvarchar로 변환되어 영향을 받은 열에 두 배의 저장 공간이 필요하다는 점을 제외하고 네이티브 형식의 데이터 파일과 같은 방법으로 작동합니다. 테이블 열로 대량 가져오기를 수행하면 원래의 메타데이터는 유지되고 값은 원래의 char 및 varchar 데이터 형식으로 다시 변환됩니다.

[!참고]

네이티브 형식에 대한 자세한 내용은 네이티브 형식을 사용하여 데이터 가져오기 및 내보내기를 참조하십시오.

유니코드 네이티브 형식의 명령 옵션

bcp, BULK INSERT 또는 INSERT ... 테이블로 가져올 수 있습니다. bcp 명령이나 BULK INSERT 문의 경우 명령줄에서 데이터 형식을 지정할 수 있습니다. INSERT ... SELECT * FROM OPENROWSET(BULK...) 문의 경우 서식 파일에서 데이터 형식을 지정해야 합니다.

다음 옵션으로 유니코드 네이티브 형식을 사용할 수 있습니다.

명령

옵션

설명

bcp

-N

bcp 유틸리티가 유니코드 네이티브 형식을 사용하게 합니다. 즉, 모든 비문자 데이터에 네이티브(데이터베이스) 데이터 형식을 사용하고 모든 문자(char, nchar, varchar, nvarchar, text 및 ntext) 데이터에 유니코드 문자 데이터 형식을 사용합니다.

BULK INSERT

DATAFILETYPE ='widenative'

데이터를 대량으로 가져올 때 유니코드 네이티브 형식을 사용합니다.

자세한 내용은 bcp 유틸리티, BULK INSERT(Transact-SQL) 또는 OPENROWSET(Transact-SQL)을 참조하십시오.

[!참고]

서식 파일에서 필드 단위로 서식을 지정할 수도 있습니다. 자세한 내용은 데이터를 가져오거나 내보내기 위한 서식 파일을 참조하십시오.

다음 예에서는 bcp를 사용하여 네이티브 데이터의 대량 내보내기를 수행하고 내보낸 데이터에 BULK INSERT를 사용하여 대량 가져오기를 수행하는 방법을 보여 줍니다.

예제 테이블

이 예에서는 dbo 스키마의 AdventureWorks2008 예제 데이터베이스에 myTestUniNativeData라는 테이블이 필요하며 예를 실행하려면 이 테이블을 만들어야 합니다. SQL Server Management Studio 쿼리 편집기에서 다음을 실행합니다.

USE AdventureWorks2008R2;
GO
CREATE TABLE myTestUniNativeData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

이 테이블을 채우고 결과 내용을 확인하려면 다음 문을 실행합니다.

INSERT INTO myTestUniNativeData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestUniNativeData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData

bcp를 사용하여 네이티브 데이터 대량 내보내기

테이블의 데이터를 데이터 파일로 내보내려면 bcpout 옵션 및 다음 한정자를 사용합니다.

한정자

설명

-N

네이티브 데이터 형식을 지정합니다.

-T

bcp 유틸리티가 통합 보안을 사용하는 트러스트된 연결을 통해 SQL Server로 연결되도록 지정합니다. -T가 지정되어 있지 않을 경우 성공적으로 로그인하려면 -U-P를 지정해야 합니다.

다음 예에서는 myTestUniNativeData 테이블에서 myTestUniNativeData-N.Dat 데이터 파일로 네이티브 형식의 데이터를 대량으로 내보냅니다. Microsoft Windows 명령 프롬프트에 다음을 입력합니다.

bcp AdventureWorks2008R2..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T

BULK INSERT를 사용하여 네이티브 데이터 대량 가져오기

다음 예에서는 BULK INSERT를 사용하여 myTestUniNativeData-N.Dat 데이터 파일의 데이터를 myTestUniNativeData 테이블로 가져옵니다. SQL Server Management Studio 쿼리 편집기에서 다음을 실행합니다.

USE AdventureWorks2008R2;
GO
BULK INSERT myTestUniNativeData 
    FROM 'C:\myTestUniNativeData-N.Dat' 
   WITH (DATAFILETYPE='widenative'); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;
GO