DatasetオブジェクトデータをSSV(Simple Separated Values)形式で処理するためのレイアウトを説明します。
本文書での主な用語は、下記のように略表記します。
(RS): RS(Record Seperator) / 0x1E(30)
(US): US(Unit Separator) / 0x1F(31)
運用環境によって(RS)、(US)はnexacro studioで他のコードに変更できます。
Environment.ssvrecordseparator
Environment.ssvunitseparator
Dataset SSV layout
Dataset SSVは、下記の形式で構成します。
項目 | 必須 |
---|---|
Stream Header | O |
Variables | X |
Datasets | X |
Stream Header
SSV{:CodePage}(RS)
Stream Headerは「SSV」で始まり、必要な場合はコロン(:)の次にCodePage値を追加できます。次の項目(VariablesもしくはDatasets)との間に(RS)で区切ります。
項目 | 必須 | 説明 |
---|---|---|
SSV | O | 「SSV」で固定された値です。 |
CodePage | X | 「:」文字で始まり、エンコード情報です。 |
SSV(RS) SSV:en_US(RS) SSV:utf-8(RS)
Variables
省略するか、1つ以上のVariableを持つことができます。n個のVariableは(RS)で区切ります。また、Datasetsとの間に(RS)で区切ります。
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でConst 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の末尾を区切ります。
参考
タイプ
Variable、Const Column Infos、Column InfosでType項目に使用可能な値は下記の通りです。
タイプ | 説明 |
---|---|
STRING | 文字列 最大値はシステムで一度に割り当てられるサイズである2GBに制限されます。 Columnのサイズに関係なく最大値まで使用できます。 |
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 | バイナリデータ |
例題
(RS)、(US)は、下記の記号で表示しました。
▼ = Record Seperator(RS)
• = Unit Seperator(US)
可読性のために改行を追加しました。実際のSSV構成時には改行を追加しません。
Datasetが一つ存在している場合
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が一つ存在している場合
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▼ ▼