SQL Server 이전 버전으로부터 네이티브 및 문자 형식 데이터 가져오기
bcp를 사용하여 Microsoft SQL Server 2000 이전 버전에서 네이티브 및 문자 형식 데이터를 가져오려면 -V 스위치를 사용하십시오. -V 스위치를 지정하면 Microsoft SQL Server 2005 가 이전 버전 Microsoft SQL Server 의 데이터 형식을 사용하며 데이터 파일 형식이 이전 버전의 형식과 동일하게 됩니다.
[!참고] -V 스위치는 Microsoft SQL Server 7.0의 -6 스위치 기능을 확장한 것입니다. -6을 사용하는 방법은 -V60 또는 -V65와 동일합니다. SQL Server 에서 아직 -6 스위치를 지원하지만 나중 버전에서는 이 스위치는 더 이상 지원하지 않을 것입니다. 따라서 -V를 사용하는 것이 좋습니다.
어떤 버전의 SQL Server 데이터 파일인지 지정하려면 다음과 같이 -V 스위치를 사용합니다.
SQL Server 버전 | 한정자 |
---|---|
Microsoft SQL Server 6.0 |
-V60 |
Microsoft SQL Server 6.5 |
-V65 |
SQL Server 7.0 |
-V70 |
SQL Server 2000 |
-V80 |
SQL Server 2005 데이터 형식 해석
SQL Server 2005 에는 몇 가지 새로운 형식에 대한 지원이 추가되었습니다. SQL Server 2005 의 새 데이터 형식을 SQL Server 2000 또는 이전 버전으로 가져오려면 이전 bcp 클라이언트에서 읽을 수 있는 형식으로 저장되어야 합니다. 다음 표에서는 SQL Server 2005 의 새 데이터 형식을 이전 버전의 SQL Server 와 호환되도록 변환하는 방법을 요약합니다.
SQL Server 2005의 새로운 데이터 형식 | 6x 버전의 호환 데이터 형식 | 70 버전의 호환 데이터 형식 | 80 버전의 호환 데이터 형식 |
---|---|---|---|
bigint |
decimal |
decimal |
* |
sql_variant |
text |
nvarchar(4000) |
* |
varchar(max) |
text |
text |
text |
nvarchar(max) |
ntext |
ntext |
ntext |
varbinary(max) |
image |
image |
image |
XML |
ntext |
ntext |
ntext |
UDT1 |
image |
image |
image |
* 이 형식은 기본 지원됩니다.
1 UDT는 사용자 정의 형식을 나타냅니다.
SQL Server 2005에서 내보내기
-V80 스위치를 사용하여 SQL Server 2005 에서 데이터를 대량 내보내는 경우 네이티브 모드의 nvarchar(max), varchar(max), varbinary(max), XML 및 UDT 데이터는 SQL Server 2005 기본값인 8바이트 접두사가 아니라 text, image 및 ntext 데이터와 같이 4바이트 접두사를 사용하여 저장됩니다.
SQL Server 7.0 또는 이전 버전에서 내보내기
SQL Server 7.0 또는 이전 버전에서 데이터를 대량 내보내는 경우 고려해야 할 사항은 다음과 같습니다.
- SQL Server 7.0, SQL Server 6.5 또는 SQL Server 6.0에서 내보낸 bigint 데이터의 저장 형식은 해당 데이터 파일의 데이터 형식에 따라 다릅니다.
- 네이티브 모드이거나 유니코드 네이티브 형식 데이터 파일인 경우 bigint 데이터는 **decimal(19,0)**로 저장됩니다.
- 문자 모드이거나 유니코드 문자 형식 데이터 파일인 경우 bigint 데이터는 문자 또는 [-]digits 유니코드 문자열(예: -25688904432)로 저장됩니다.
- char 또는 varchar 열이 있는 테이블인 경우 SQL Server 6.0 또는 SQL Server 6.5에서 내보낼 때 bcp는 데이터의 길이와 동등한 각 데이터 파일 필드에 1바이트 접두사를 추가합니다. numeric 데이터가 있는 테이블인 경우 SQL Server 네이티브 형식으로 데이터 파일에 이 정보가 기록됩니다.
- SQL Server 7.0 및 SQL Server 2000 에서 값 0은 길이가 0인 열을 나타냅니다.
SQL Server 6.5 또는 6.0에서 내보내기
SQL Server 6.5 또는 SQL Server 6.0에서 데이터를 대량 내보내는 경우 고려해야 할 사항은 다음과 같습니다.
- SQL Server 6.5 또는 이전 버전에서 bcp는 Null 값을 길이가 0인 값으로 나타내지만 이제 Null은 길이 값 -1로 저장됩니다.
- 또한 SQL Server 6.5 및 이전 버전이 Null을 허용하는 bit 데이터를 지원하지 않기 때문에 bit 열의 Null 값은 0으로 작성됩니다.
- bcp 유틸리티는 datetime 또는 smalldatetime 데이터에 대해 SQL Server 6.0 또는 SQL Server 6.5 날짜 형식을 생성하지 않습니다. 날짜는 항상 ODBC 형식으로 작성됩니다.
- -V65 스위치를 사용하면 다중 날짜 변환을 지원하는 데 필요한 오버헤드 때문에 성능에 영향을 받습니다.
- 데이터 값은 SQL Server 6.5 또는 이전 버전에서 다릅니다. 자세한 내용은 다음 섹션인 "날짜 값 복사"를 참조하십시오.
날짜 값 복사
bcp는 SQL Server 7.0 부터 ODBC 대량 복사 API를 사용합니다. 따라서 SQL Server 7.0 또는 이후 버전으로 날짜 값을 가져오려면 bcp는 ODBC 날짜 형식(yyyy-mm-dd hh:mm:ss[.f...])을 사용합니다.
반면 SQL Server 6.5 또는 이전 버전에서는 bcp가 DB-Library 대량 복사 API 및 DB-Library 날짜 형식을 사용합니다. SQL Server 6.5 또는 이전 버전에서 SQL Server 7.0 및 이후 버전으로 날짜 형식을 내보내려면 -V65 스위치를 사용하십시오. -V65를 지정하면 bcp 명령은 우선 ODBC 날짜 형식을 사용하여 데이터 파일의 날짜 값 변환을 시도합니다. 이 변환이 실패하면 bcp는 DB-Library 형식을 사용하여 날짜 값 변환을 시도합니다.
-V65를 지정한 경우라도 bcp 명령은 datetime 및 smalldatetime 값에 대해서는 항상 ODBC 기본 형식을 사용하여 문자 형식 데이터 파일을 내보냅니다. 예를 들어 12 Aug 1998
이라는 날짜가 포함된 datetime 열은 1998-08-12 00:00:00.000
문자열로 데이터 파일에 대량 복사됩니다.
중요: |
---|
bcp를 사용하여 smalldatetime 필드로 데이터를 가져올 때 초 값이 00.000인지 확인하십시오. 그렇지 않으면 이 작업은 실패합니다. smalldatetime 데이터 형식은 가장 근접한 분 값만 갖습니다. 이 경우 BULK INSERT 및 INSERT ... SELECT * FROM OPENROWSET(BULK...)가 실패하지는 않지만 초 값은 잘립니다. |
-V65 스위치를 사용하면 다중 날짜 변환을 지원하는 데 필요한 오버헤드 때문에 성능에 영향을 받습니다.
참고 항목
개념
관련 자료
bcp 유틸리티
BULK INSERT(Transact-SQL)
OPENROWSET(Transact-SQL)
데이터 형식(Transact-SQL)
SQL Server 2005 데이터베이스 엔진의 이전 버전과의 호환성
CAST 및 CONVERT(Transact-SQL)