Dataset SSV Format

Dataset 오브젝트 데이터를 SSV(Simple Separated Values) 형태로 처리하기 위한 레이아웃을 설명합니다.

본문에서 주요 용어는 아래와 같이 줄여서 표시합니다.

운영 환경에 따라 (RS), (US)는 넥사크로 스튜디오에서 다른 코드로 변경할 수 있습니다.

Dataset SSV layout

Dataset SSV는 아래와 같은 형식으로 구성합니다.

항목

필수

Stream Header

O

Variables

X

Datasets

X

Stream Header

SSV{:CodePage}(RS)

Stream Header는 "SSV"로 시작하고 필요한 경우 콜론(:) 다음에 CodePage 값을 추가할 수 있습니다. (RS)로 다음 항목(Variables 또는 Datasets)과 구분합니다.

항목

필수

설명

SSV

O

"SSV"로 고정된 값입니다.

CodePage

X

":" 문자로 시작하며 인코딩 정보입니다.

SSV(RS)
SSV:en_US(RS)
SSV:utf-8(RS)

Variables

생략하거나 1개 이상의 Variable을 가질 수 있습니다. n개의 Variable은 (RS)로 구분하며 (RS)로 Datasets와 구분합니다.

Variable

Variable ID{:Type(Length)}{=Value}(RS)
Variable ID{:Type}{=Value}(RS)

항목

필수

설명

Variable ID

O

고유 ID로 중복된 값이 들어오면 마지막에 들어온 값만 처리합니다.

Type

X

":" 문자로 시작하며 Length 정보를 포함할 수 있습니다.

생략한 경우 "STRING"으로 처리합니다.

Length

X

"("문자와 ")"문자 사이의 값으로 처리합니다.

생략한 경우 Type에 따른 임계치로 처리합니다.

단, Type이 "STRING"인 경우에는 255로 처리합니다.

Value

X

"="문자로 시작하며 (RS)가 나오기 전까지 Value로 처리합니다.

name1=value(RS)
name1=value1(RS)name2=value2(RS)
name1:STRING=value1(RS)name2=value2(RS)
name3=value3(RS)name4:STRING(10)=value4(RS)

Datasets

생략하거나 1개 이상의 Dataset을 가질 수 있습니다.

Dataset

Dataset은 아래와 같은 형식을 가집니다.

항목

필수

Dataset Header

O

Const Column Infos

X

Column Infos

O

Records

X

Null Record

O

Const Column Infos가 있을 경우 Column Info보다 먼저 나열해야 합니다.

순서가 바뀌거나 Column Info 뒤에 다시 Const Column Infos 정보를 나열하는 경우 정상적인 동작을 보장하지 않습니다.

Dataset 형식 상세

Dataset의 각 항목을 설명합니다.

Dataset Header

Dataset:Dataset ID(RS)

Dataset Header는 "Dataset"로 시작하고 콜론(:) 다음에 Dataset ID를 작성합니다. (RS)로 다음 항목과 구분합니다.

Const Column Infos

_Const_(US)Const Column ID{:Type(Length)}{=Value}(RS)
_Const_(US)Const Column ID{:Type}{=Value}(RS)

"_Const_"로 시작하고 1개 이상의 Const Column Info를 가질 수 있습니다. n개의 Const Column Info는 (US)로 구분하며 (RS)로 다음 항목과 구분합니다.

항목

필수

설명

_Const_

O

"_Const_"로 고정된 값입니다.

Const Column ID

O

Dataset에서 Const Column ID로 사용할 ID 값입니다.

Type

X

":" 문자로 시작하며 Length 정보를 포함할 수 있습니다.

생략한 경우 "STRING"으로 처리합니다.

Length

X

"("문자와 ")"문자 사이의 값으로 처리합니다.

생략한 경우 Type에 따른 임계치로 처리합니다.

단, Type이 "STRING"인 경우에는 255로 처리합니다.

Value

X

"="문자로 시작하며 (US) 또는 (RS)가 나오기 전까지 Value로 처리합니다.

Column Infos

_RowType_(US)Column ID{:Type(Length)}{:Sum Type}{:Sum Text}(RS)
_RowType_(US)Column ID{:Type}{:Sum Type}{:Sum Text}(RS)

"_RowType_"로 시작하고 1개 이상의 Column Info를 가질 수 있습니다. n개의 Column Info는 (US)로 구분하며 (RS)로 다음 항목과 구분합니다.

항목

필수

설명

_RowType_

O

"_RowType_"로 고정된 값입니다.

Column ID

O

Dataset에서 Column ID로 사용할 ID 값입니다.

Type

X

":" 문자로 시작하며 Length 정보를 포함할 수 있습니다.

생략한 경우 "STRING"으로 처리합니다.

Length

X

"("문자와 ")"문자 사이의 값으로 처리합니다.

생략한 경우 Type에 따른 임계치로 처리합니다.

단, Type이 "STRING"인 경우에는 255로 처리합니다.

Sum Type

X

":"문자로 ColumnInfo 오브젝트의 prop 속성값을 설정합니다.

Sum Text

X

":"문자로 ColumnInfo 오브젝트의 sumtext 속성값을 설정합니다.

Records

RowType(US)Column Value(RS)

첫 번째 필드값은 RowType이고 그 이후 필드값은 Column Infos에서 설정한 Column 순서대로 작성합니다. 각 필드값은 (US)로 구분합니다.

항목

필수

설명

RowType

O

레코드 형태를 작성합니다.

N: Normal Record

I: Inserted Record

U: Updated Record

D: Deleted Record

O: Original Record (Update Record의 원본 레코드입니다. Update Record가 있는 경우 사용할 수 있습니다).

Column Value

O

Dataset에서 Column Value로 사용할 값입니다.

Column Value를 undefined로 처리하고자 한다면 "ETX (End of Text) / 0x03(03)"을 사용합니다.

Null Record

(RS)로 Dataset의 끝을 구분합니다.

참고

Type

Variable, Const Column Infos, Column Infos에서 Type 항목에 사용할 수 있는 값은 아래와 같습니다.

Type

설명

STRING

문자열. 최대값은 system에서 한번에 할당 가능한 크기인 2GB로 제한됨

Column의 size와 관계없이 최대치까지 사용될 수 있다.

INT

정수형 (-231 ~ 231-1)

FLOAT, DECIMAL

실수형 (±2.2X10-308 ~ ±1.7X10308)

BIGDECIMAL

실수형(문자열로 저장) (±10-1056 ~ ±10+1056)

DATE

날짜형 YYYYMMDD (-8192/01/01 ~ 8191/12/31)

DATETIME

YYYYMMDDHHmmssuuu (msec포함가능)

TIME

6자리 HHmmssuuu(msec포함가능)

BLOB

이진 데이터

예제

Dataset이 1개 존재하는 경우

SSV:utf-8▼
Dataset:dataset0▼
_RowType_•Col1:String(20)•Col2:Int:SUM•Col3:Decimal:AVG▼
N•Test•0•1•1▼
I•Abc•1•2•2▼
U•Def•2•3•3▼
O•Chk•2•3•3▼
D•Ghi•3•4•4▼
▼

Const Column이 존재하는 Dataset이 1개 존재하는 경우

SSV:utf-8▼
Dataset:dataset0▼
_Const_•ConstCol1:STRING(20)=Name•ConstCol2:INT=1•ConstCol3:DECIMAL=0.8▼
_RowType_•Col1:STRING(20)•Col2:INT:SUM•Col3:DECIMAL:AVG▼
N•Test•0•1•1▼
I•Abc•1•2•2▼
U•Def•2•3•3▼
O•Chk•2•3•3▼
D•Ghi•3•4•4▼
▼

Dataset이 여러 개 존재하는 경우

SSV:utf-8▼
Dataset:dataset0▼
_Const_•ConstCol1:STRING(20)=Name•ConstCol2:INT=1•ConstCol3:DECIMAL=0.8▼
_RowType_•Col1:STRING(20)•Col2:INT:SUM•Col3:DECIMAL:AVG▼
N•Test•0•1•1▼
I•Abc•1•2•2▼
U•Def•2•3•3▼
O•Chk•2•3•3▼
D•Ghi•3•4•4▼
▼
Dataset:dataset1▼
_RowType_•Col1:INT(4):Summ,Col2:STRING(30):Text▼
N•0•test▼
I•1•test1▼
U•2•test3▼
O•2•test3-1▼
D•3•test4▼
▼

Variable만 존재하는 경우

SSV:utf-8▼
Var4=10▼Var5=20▼
▼

Variable과 Dataset이 존재하는 경우

SSV:utf-8▼
Var4=10▼Var5=20▼
Dataset:dataset0▼
_Const_•ConstCol1:STRING(20)=Name•ConstCol2:INT=1•ConstCol3:DECIMAL=0.8▼
_RowType_•Col1:STRING(20)•Col2:INT:SUM•Col3:DECIMAL:AVG▼
N•0•test▼
I•1•test1▼
U•2•test3▼
O•2•test3-1▼
D•3•test4▼
▼