dwloader에 대한 데이터 형식 변환 규칙 - PDW(Analytics Platform Service)

이 문서에서는 dwloader 명령줄 로더가 PDW에 데이터를 로드할 때 지원하는 입력 데이터 형식 및 암시적 데이터 형식 변환에 대해 설명합니다. 입력 데이터가 SQL Server PDW 대상 테이블의 데이터 형식과 일치하지 않는 경우 암시적 데이터 변환이 발생합니다. 로드 프로세스를 디자인할 때 이 정보를 사용하여 데이터가 SQL Server PDW에 성공적으로 로드되도록 합니다.

이진 형식에 리터럴 삽입

다음 표에서는 리터럴 값을 이진(n) 또는 varbinary(n) 형식의 SQL Server PDW 열로 로드하기 위한 허용되는 리터럴 형식, 형식 변환 규칙을 정의합니다.

입력 데이터 형식 입력 데이터 예제 이진 또는 varbinary 데이터 형식으로 변환
이진 리터럴 [0x]hexidecimal_string

예: 12Ef 또는 0x12Ef
0x 접두사는 선택 사항입니다.

데이터 원본 길이는 데이터 형식에 지정된 바이트 수를 초과할 수 없습니다.

데이터 원본 길이가 이진 데이터 형식의 크기보다 작은 경우 데이터는 데이터 형식 크기에 도달하기 위해 0으로 오른쪽으로 패딩됩니다.

날짜 및 시간 형식에 리터럴 삽입

날짜 및 시간 리터럴은 작은따옴표로 묶인 특정 형식의 문자열 리터럴을 사용하여 표현됩니다. 다음 표에서는 datetime, smalldatetime, date, time, datetimeoffset 또는 datetime2 형식의 열로 날짜 또는 시간 리터럴을 로드하는 데 허용되는 리터럴 형식, 형식 및 변환 규칙을 정의합니다. 테이블은 지정된 데이터 형식의 기본 형식을 정의합니다. 지정할 수 있는 다른 형식은 Datetime 형식 섹션 에 정의되어 있습니다. 날짜 및 시간 리터럴에는 선행 또는 후행 공백을 포함할 수 없습니다. 날짜, smalldatetime 및 null 값은 고정 너비 모드에서 로드할 수 없습니다.

datetime 데이터 형식

다음 표에서는 datetime 형식의 열에 리터럴 값을 로드하기 위한 기본 형식 및 규칙을 정의합니다. 빈 문자열('')은 기본값 '1900-01-01 12:00:00.000'으로 변환됩니다. 공백(' ')만 포함하는 문자열은 오류를 생성합니다.

입력 데이터 형식 입력 데이터 예제 datetime 데이터 형식으로 변환
날짜/시간 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss[.fff]'

예: '2007-05-08 12:35:29.123'
누락된 소수 자릿수는 값이 삽입될 때 0으로 설정됩니다. 예를 들어 리터럴 '2007-05-08 12:35'는 '2007-05-08 12:35:00.000'으로 삽입됩니다.
smalldatetime 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm'

예: '2007-05-08 12:35'
값이 삽입될 때 소수 자릿수를 초 및 다시 기본 0으로 설정됩니다.
날짜 형식의 문자열 리터럴 'yyyy-MM-dd'

예: '2007-05-08'
시간 값(시간, 분, 초 및 분수)은 값이 삽입될 때 12:00:00.000으로 설정됩니다.
datetime2 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss.fffffff'

예: '2007-05-08 12:35:29.1234567'
원본 데이터는 세 개의 소수 자릿수를 초과할 수 없습니다. 예를 들어 리터럴 '2007-05-08 12:35:29.123'이 삽입되지만 '2007-05-8 12:35:29.1234567' 값은 오류를 생성합니다.

smalldatetime 데이터 형식

다음 표에서는 smalldatetime 형식의 열에 리터럴 값을 로드하기 위한 기본 형식 및 규칙을 정의합니다. 빈 문자열('')이 기본값 '1900-01-01 12:00'으로 변환됩니다. 공백(' ')만 포함하는 문자열은 오류를 생성합니다.

입력 데이터 형식 입력 데이터 예제 smalldatetime 데이터 형식으로 변환
smalldatetime 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm' 또는 'yyyy-MM-dd hh:mm:ss'

예: '2007-05-08 12:00' 또는 '2007-05-08 12:00:15'
원본 데이터에는 연도, 월, 날짜, 시간 및 분 값이 있어야 합니다. 초는 선택 사항이며, 있는 경우 값 00으로 설정해야 합니다. 다른 값은 오류를 생성합니다.

초는 선택 사항입니다. smalldatetime 열에 로드할 때 dwloader는 초 및 소수 자릿수 초를 반올림합니다. 예를 들어 1999-01-05 20:10:35.123은 01-05 20:11로 로드됩니다.
날짜 형식의 문자열 리터럴 'yyyy-MM-dd'

예: '2007-05-08'
시간 값(시간, 분, 초 및 분수)은 값이 삽입될 때 0으로 설정됩니다.

날짜 데이터 형식

다음 표에서는 리터럴 값을 형식 날짜의 열로 로드하기 위한 기본 형식 및 규칙을 정의합니다. 빈 문자열('')이 기본값 '1900-01-01'로 변환됩니다. 공백(' ')만 포함하는 문자열은 오류를 생성합니다.

입력 데이터 형식 입력 데이터 예제 날짜 데이터 형식으로 변환
날짜 형식의 문자열 리터럴 'yyyy-MM-dd'

예: '2007-05-08'

시간 데이터 형식

다음 표에서는 리터럴 값을 형식 시간의 열로 로드하기 위한 기본 형식 및 규칙을 정의합니다. 빈 문자열('')이 기본값 '00:00:00.0000'으로 변환됩니다. 공백(' ')만 포함하는 문자열은 오류를 생성합니다.

입력 데이터 형식 입력 데이터 예제 시간 데이터 형식으로 변환
시간 형식의 문자열 리터럴 'hh:mm:ss.fffffff'

예: '12:35:29.1234567'
데이터 원본의 전체 자릿수(소수 자릿수)가 시간 데이터 형식의 전체 자릿수보다 작거나 같은 경우 데이터는 0으로 오른쪽에 패딩됩니다. 예를 들어 리터럴 값 '12:35:29.123'은 '12:35:29.1230000'으로 삽입됩니다.

datetimeoffset 데이터 형식

다음 표에서는 datetimeoffset(n) 형식의 열에 리터럴 값을 로드하기 위한 기본 형식 및 규칙을 정의합니다. 기본 형식은 'yyyy-MM-dd hh:mm:ss.fffffff {+|-}hh:mm'입니다. 빈 문자열('')은 기본값 '1900-01-01 12:00:00.0000000 +00:00'으로 변환됩니다. 공백(' ')만 포함하는 문자열은 오류를 생성합니다. 소수 자릿수의 수는 열 정의에 따라 달라집니다. 예를 들어 datetimeoffset(2)으로 정의된 열에는 두 개의 소수 자릿수가 있습니다.

입력 데이터 형식 입력 데이터 예제 datetimeoffset 데이터 형식으로 변환
날짜/시간 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss[.fff]'

예: '2007-05-08 12:35:29.123'
누락된 소수 자릿수 및 오프셋 값은 값이 삽입될 때 0으로 설정됩니다. 예를 들어 리터럴 '2007-05-08 12:35:29.123'은 '2007-05-08 12:35:29.1230000 +00:00'으로 삽입됩니다.
smalldatetime 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm'

예: '2007-05-08 12:35'
초, 소수 자릿수 및 오프셋 값을 다시 기본 값이 삽입되면 0으로 설정됩니다.
날짜 형식의 문자열 리터럴 'yyyy-MM-dd'

예: '2007-05-08'
시간 값(시간, 분, 초 및 분수)은 값이 삽입될 때 0으로 설정됩니다. 예를 들어 리터럴 '2007-05-08'은 '2007-05-08 00:00:00.000000 +00:00'으로 삽입됩니다.
datetime2 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss.fffffff'

예: '2007-05-08 12:35:29.1234567'
원본 데이터는 datetimeoffset 열에서 지정된 소수 자릿수 초를 초과할 수 없습니다. 데이터 원본의 소수 자릿수(초)가 작거나 같은 경우 데이터는 0으로 오른쪽에 패딩됩니다. 예를 들어 데이터 형식이 datetimeoffset(5)이면 리터럴 값 '2007-05-08 12:35:29.123 +12:15'가 '12:35:29.12300 +12:15'로 삽입됩니다.
datetimeoffset 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss.fffffff {+|-} hh:mm'

예: '2007-05-08 12:35:29.1234567 +12:15'
원본 데이터는 datetimeoffset 열에서 지정된 소수 자릿수 초를 초과할 수 없습니다. 데이터 원본의 소수 자릿수(초)가 작거나 같은 경우 데이터는 0으로 오른쪽에 패딩됩니다. 예를 들어 데이터 형식이 datetimeoffset(5)이면 리터럴 값 '2007-05-08 12:35:29.123 +12:15'가 '12:35:29.12300 +12:15'로 삽입됩니다.

datetime2 데이터 형식

다음 표에서는 datetime2(n) 형식의 열에 리터럴 값을 로드하기 위한 기본 형식 및 규칙을 정의합니다. 기본 형식은 'yyyy-MM-dd hh:mm:ss.fffffff'입니다. 빈 문자열('')이 기본값 '1900-01-01 12:00:00'으로 변환됩니다. 공백(' ')만 포함하는 문자열은 오류를 생성합니다. 소수 자릿수의 수는 열 정의에 따라 달라집니다. 예를 들어 datetime2(2)로 정의된 열에는 두 개의 소수 자릿수가 있습니다.

입력 데이터 형식 입력 데이터 예제 datetime2 데이터 형식으로 변환
날짜/시간 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss[.fff]'

예: '2007-05-08 12:35:29.123'
소수 자릿수 초는 선택 사항이며 값이 삽입될 때 0으로 설정됩니다.
smalldatetime 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm'

예: '2007-05-08 12'
선택적 초 및 소수 자릿수 다시 기본 값이 삽입될 때 0으로 설정됩니다.
날짜 형식의 문자열 리터럴 'yyyy-MM-dd'

예: '2007-05-08'
시간 값(시간, 분, 초 및 분수)은 값이 삽입될 때 0으로 설정됩니다. 예를 들어 리터럴 '2007-05-08'은 '2007-05-08 12:00:00.0000000'으로 삽입됩니다.
datetime2 형식의 문자열 리터럴 'yyyy-MM-dd hh:mm:ss:fffffff'

예: '2007-05-08 12:35:29.1234567'
데이터 원본에 datetime2(n)에 지정된 값보다 작거나 같은 데이터 및 시간 구성 요소가 포함되어 있으면 데이터가 삽입되고, 그렇지 않으면 오류가 생성됩니다.

DateTime 형식

Dwloader는 SQL Server PDW에 로드하는 입력 데이터에 대해 다음 데이터 형식을 지원합니다. 자세한 내용은 표 뒤를 참조하세요.

Datetime smalldatetime date datetime2 datetimeoffset
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fff] [M[M]]M-[d]d-[yy]yy HH:mm[:00] [M[M]]M-[d]d-[yy]yy [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] zzz
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fff][tt] [M[M]]M-[d]d-[yy]yy hh:mm[:00][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fff] [M[M]]M-[yy]yy-[d]d HH:mm[:00] [M[M]]M-[yy]yy-[d]d [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] zzz
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fff][tt] [M[M]]M-[yy]yy-[d]d hh:mm[:00][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] [yy]yy-[M[M]]M-[d]d HH:mm[:00] [yy]yy-[M[M]]M-[d]d [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fff][tt] [yy]yy-[M[M]]M-[d]d hh:mm[:00][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fff] [yy]yy-[d]d-[M[M]]M HH:mm[:00] [yy]yy-[d]d-[M[M]]M [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fff][tt] [yy]yy-[d]d-[M[M]]M hh:mm[:00][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fff] [d]d-[M[M]]M-[yy]yy HH:mm[:00] [d]d-[M[M]]M-[yy]yy [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] zzz
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fff][tt] [d]d-[M[M]]M-[yy]yy hh:mm[:00][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fff] [d]d-[yy]yy-[M[M]]M HH:mm[:00] [d]d-[yy]yy-[M[M]]M [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] zzz
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fff][tt] [d]d-[yy]yy-[M[M]]M hh:mm[:00][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] zzz

상세 정보:

  • 월, 일 및 연도 값을 구분하려면 ' - ', ' / '또는 '를 사용할 수 있습니다. '. 간단히 하기 위해 테이블은 '- ' 구분 기호만 사용합니다.

  • 월을 텍스트로 지정하려면 세 개 이상의 문자를 사용합니다. 1자 또는 2자인 월은 숫자로 해석됩니다.

  • 시간 값을 구분하려면 ': ' 기호를 사용합니다.

  • 대괄호 안에 있는 문자는 선택 사항입니다.

  • 문자 'tt'가 지정됩니다 AM|PM|am|pm. 기본값은 AM입니다. 'tt'를 지정하면 시간 값(hh)이 0~12 범위여야 합니다.

  • 문자 'zzz'는 시스템의 현재 표준 시간대에 대한 표준 시간대 오프셋을 형식 {+|-}HH:ss]으로 지정합니다.

숫자 형식에 리터럴 삽입

다음 표에서는 숫자 형식을 사용하는 SQL Server PDW 열에 리터럴 값을 로드하기 위한 기본 형식 및 변환 규칙을 정의합니다.

비트 데이터 형식

다음 표에서는 리터럴 값을 비트 형식의 열로 로드하기 위한 기본 형식 및 규칙을 정의합니다. 빈 문자열('') 또는 공백만 포함된 문자열(' ')이 0으로 변환됩니다.

입력 데이터 형식 입력 데이터 예제 비트 데이터 형식으로 변환
정수 형식의 문자열 리터럴 'ffffffff'

예: '1' 또는 '321'
문자열 리터럴로 서식이 지정된 정수 값은 음수 값을 포함할 수 없습니다. 예를 들어 값 '-123'은 오류를 생성합니다.

1보다 큰 값은 1로 변환됩니다. 예를 들어 값 '123'은 1로 변환됩니다.
문자열 리터럴 'TRUE' 또는 'FALSE'

예: 'true'
값 'TRUE'는 1로 변환됩니다. 값 'FALSE'가 0으로 변환됩니다.
정수 리터럴 fffffffn

예: 1 또는 321
1보다 크거나 0보다 작은 값은 1로 변환됩니다. 예를 들어 값 123 및 -123은 1로 변환됩니다.
10진수 리터럴 fffnn.fffn

예: 1234.5678
1보다 크거나 0보다 작은 값은 1로 변환됩니다. 예를 들어 값 123.45 및 -123.45는 1로 변환됩니다.

10진수 데이터 형식

다음 표에서는 리터럴 값을 10진수(p,s) 형식의 열로 로드하는 규칙을 정의합니다. 데이터 변환 규칙은 SQL Server의 경우와 동일합니다. 자세한 내용은 MSDN에서 데이터베이스 엔진(데이터 형식 변환)를 참조하세요.

입력 데이터 형식 입력 데이터 예제
정수 리터럴 321312313123
10진수 리터럴 123344.34455

float 및 real 데이터 형식

다음 표에서는 float 또는 real 형식의 열에 리터럴 값을 로드하는 규칙을 정의합니다. 데이터 변환 규칙은 SQL Server의 경우와 동일합니다. 자세한 내용은 MSDN에서 데이터베이스 엔진(데이터 형식 변환)를 참조하세요.

입력 데이터 형식 입력 데이터 예제
정수 리터럴 321312313123
10진수 리터럴 123344.34455
부동 소수점 리터럴 3.12323E+14

int, bigint, tinyint, smallint 데이터 형식

다음 표에서는 int, bigint, tinyint 또는 smallint 형식의 열에 리터럴 값을 로드하는 규칙을 정의합니다. 데이터 원본은 지정된 데이터 형식에 허용되는 범위를 초과할 수 없습니다. 예를 들어 tinyint의 범위는 0에서 255이고 int범위는 -2,147,483,648에서 2,147,483,647입니다.

입력 데이터 형식 입력 데이터 예제 정수 데이터 형식으로 변환
정수 리터럴 321312313123
10진수 리터럴 123344.34455 소수점 오른쪽의 값은 잘립니다.

money 및 smallmoney 데이터 형식

Money 리터럴 값은 선택적 소수점과 선택적 통화 기호를 접두사로 사용하는 숫자 문자열로 표시됩니다. 데이터 원본은 지정된 데이터 형식에 허용되는 범위를 초과할 수 없습니다. 예를 들면 다음과 같습니다. smallmoney범위는 -214,748.3648에서 214,748.3647이며, 금액 범위는 -922,337,203,685,477.5808에서 922,337,203,685,477.5807입니다. 다음 표에서는 money 또는 smallmoney 형식의 열에 리터럴 값을 로드하는 규칙을 정의합니다.

입력 데이터 형식 입력 데이터 예제 money 또는 smallmoney 데이터 형식으로 변환
정수 리터럴 321312 값이 삽입될 때 소수점 뒤의 누락된 숫자는 0으로 설정됩니다. 예를 들어 리터럴 12345는 12345.0000으로 삽입됩니다.
10진수 리터럴 123344.34455 소수점 이후의 자릿수가 4를 초과하면 값이 가장 가까운 값으로 반올림됩니다. 예를 들어 값 123344.34455는 123344.3446으로 삽입됩니다.
돈 리터럴 $123456.7890 통화 기호가 값과 함께 삽입되지 않습니다.

소수점 이후의 자릿수가 4를 초과하면 값이 가장 가까운 값으로 반올림됩니다.

문자열 형식에 리터럴 삽입

다음 표에서는 문자열 형식을 사용하는 SQL Server PDW 열에 리터럴 값을 로드하기 위한 기본 형식 및 변환 규칙을 정의합니다.

char, varchar, nchar 및 nvarchar 데이터 형식

다음 표에서는 char, varchar, nchar및 nvarchar 형식의 열에 리터럴 값을 로드하기 위한 기본 형식 및 규칙을 정의합니다. 데이터 원본 길이는 데이터 형식에 지정된 크기를 초과할 수 없습니다. 데이터 원본 길이가 char 또는 nchar 데이터 형식의 크기보다 작은 경우 데이터는 데이터 형식 크기에 도달하기 위해 빈 공백으로 오른쪽으로 패딩됩니다.

입력 데이터 형식 입력 데이터 예제 문자 데이터 형식으로 변환
문자열 리터럴 형식: '문자 문자열'

예: 'abc'
해당 없음
유니코드 문자열 리터럴 형식: N'character string'

예: N'abc'
해당 없음
정수 리터럴 형식: ffffffffn

예: 321312313123
해당 없음
10진수 리터럴 형식: ffffff.fffffff

예: 12344.34455
해당 없음
돈 리터럴 형식: $ffffff.fffnn

예: $123456.99
선택적 통화 기호는 값과 함께 삽입되지 않습니다. 통화 기호를 삽입하려면 값을 문자열 리터럴로 삽입합니다. 이는 모든 리터럴을 문자열 리터럴로 처리하는 로더의 형식과 일치합니다.

쉼표는 허용되지 않습니다.

소수점 이후의 자릿수가 2를 초과하면 값이 가장 가까운 값으로 반올림됩니다. 예를 들어 값 123.946789는 123.95로 삽입됩니다.

CONVERT 함수를 사용하여 money 리터럴을 삽입할 때는 기본 스타일 0(쉼표 없음 및 소수점 뒤에 2자리)만 허용됩니다.

일반적인 주의 사항

dwloader 는 SMP SQL Server가 수행하는 것과 동일한 암시적 변환을 수행하지만 SMP SQL Server에서 지원하는 모든 암시적 변환을 지원하지는 않습니다.