다음을 통해 공유


데이터를 가져오거나 내보낼 때 문자 형식 사용

다른 프로그램에서 사용할 텍스트 파일로 데이터를 대량으로 내보내거나 다른 프로그램에서 생성한 텍스트 파일에서 데이터를 대량으로 가져오는 경우 문자 형식을 사용하는 것이 좋습니다.

[!참고]

Microsoft SQL Server 인스턴스 및 유니코드 문자 데이터는 포함하지만 확장 문자 또는 DBCS(더블바이트 문자 집합) 문자는 포함하지 않는 데이터 파일 간에 데이터를 대량 전송하는 경우에는 유니코드 문자 형식을 사용하십시오. 자세한 내용은 유니코드 문자 형식을 사용하여 데이터 가져오기 및 내보내기를 참조하십시오.

문자 형식은 모든 열에 문자 데이터 형식을 사용합니다. 스프레드시트 등의 다른 프로그램에서 데이터를 사용하거나 Oracle 등의 다른 데이터베이스의 데이터를 SQL Server 인스턴스로 복사할 때는 문자 형식으로 정보를 저장하십시오.

문자 형식 사용 시 고려 사항

문자 형식을 사용할 때 다음 사항을 고려하십시오.

  • 기본적으로 bcp 유틸리티는 탭 문자로 문자 데이터 필드를 구분하며 줄 바꿈 문자로 레코드를 종료합니다. 다른 종결자를 지정하는 방법은 필드 및 행 종결자 지정을 참조하십시오.

  • 기본적으로 문자 모드의 데이터를 대량으로 내보내거나 대량으로 가져오기 전에 다음 변환이 수행됩니다.

    대량 작업의 방향

    변환

    내보내기

    데이터를 문자 표시로 변환합니다. 명시적으로 요청한 경우 문자 열에 요청한 코드 페이지로 데이터를 변환합니다. 코드 페이지를 지정하지 않으면 클라이언트 컴퓨터의 OEM 코드 페이지를 사용하여 문자 데이터를 변환합니다.

    가져오기

    필요한 경우 먼저 문자 데이터를 네이티브 표시로 변환하고 클라이언트의 코드 페이지에서 대상 열의 코드 페이지로 문자 데이터를 변환합니다.

  • 변환 작업 중에 확장 문자가 손실되는 것을 방지하려면 유니코드 문자 형식을 사용하거나 코드 페이지를 지정하십시오. 코드 페이지 사용 방법은 서로 다른 데이터 정렬 간의 데이터 복사를 참조하십시오.

  • 문자 서식 파일로 저장되는 모든 sql_variant 데이터는 메타데이터 없이 저장됩니다. 각 데이터 값은 암시적 데이터 변환 규칙에 따라 char로 변환되며 sql_variant 열로 데이터를 가져오는 경우 char로 변환됩니다. sql_variant 이외의 데이터 형식으로 열에 가져오는 경우 해당 데이터는 char에서 암시적 변환을 거칩니다. 데이터 변환 방법은 데이터 형식 변환(데이터베이스 엔진)을 참조하십시오.

  • bcp 유틸리티가 문자 형식 데이터 파일로 money 값을 내보낼 때는 소수점 이하 4자리만 표시하며 쉼표 구분자 등 숫자 구분 기호는 사용하지 않습니다. 예를 들어 1,234,567.123456이라는 값을 포함하는 money 열을 데이터 파일로 대량 내보내면 1234567.1235라는 문자열이 됩니다.

문자 형식의 명령 옵션

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

다음 명령줄 옵션으로 문자 형식을 사용할 수 있습니다.

명령

옵션

설명

bcp

-c

bcp 유틸리티가 문자 데이터를 사용하도록 합니다.1

BULK INSERT

DATAFILETYPE ='char'

데이터를 대량 가져올 때 문자 형식을 사용합니다.

1 문자(-c) 데이터를 이전 버전의 SQL Server 클라이언트와 호환되는 형식으로 로드하려면 -V 스위치를 사용하십시오. 자세한 내용은 SQL Server 이전 버전으로부터 네이티브 및 문자 형식 데이터 가져오기를 참조하십시오.

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

[!참고]

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

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

예제 테이블

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

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

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

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

bcp를 사용하여 문자 데이터 대량 내보내기

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

한정자

설명

-c

문자 형식을 지정합니다.

-t,

쉼표(,)를 필드 종결자로 지정합니다.

참고참고
기본 필드 종결자는 탭 문자(\t)입니다. 자세한 내용은 필드 및 행 종결자 지정을 참조하십시오.

-T

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

다음 예에서는 myTestCharData 테이블에서 쉼표(,)를 필드 종결자로 사용하는 myTestCharData-c.Dat라는 새 데이터 파일로 문자 형식의 데이터를 대량으로 내보냅니다. Microsoft Windows 명령 프롬프트에 다음을 입력합니다.

bcp AdventureWorks2008R2..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

BULK INSERT를 사용하여 문자 데이터 대량 가져오기

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

USE AdventureWorks2008R2;
GO
BULK INSERT myTestCharData 
   FROM 'C:\myTestCharData-c.Dat' 
   WITH (
      DATAFILETYPE='char',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestCharData;
GO