專利名稱::一種用于描述關(guān)系數(shù)據(jù)的增強(qiáng)型csv文件格式的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及的是信息系統(tǒng)數(shù)據(jù)交換過(guò)程中的一種人機(jī)可讀的高效的字符串編碼方法和文件格式,具體地說(shuō)是一種用于描述關(guān)系數(shù)據(jù)的增強(qiáng)型CSV文件格式。
背景技術(shù):
:當(dāng)代軟件開發(fā)技術(shù)日新月異,數(shù)據(jù)訪問(wèn)技術(shù)林立,不同的系統(tǒng)之間進(jìn)行關(guān)系型數(shù)據(jù)交換是一種極為常見(jiàn)的應(yīng)用。XML是信息交換的一種標(biāo)準(zhǔn),但是它作為一種通用標(biāo)記語(yǔ)言,如果要描述關(guān)系型數(shù)據(jù)需要進(jìn)行深度擴(kuò)展,結(jié)構(gòu)較為復(fù)雜,而且冗余字符較多,不夠精簡(jiǎn)。因此,開發(fā)人員常采用CSV文件格式。逗號(hào)分隔型取值格式(英文全稱為CommaS印aratedValues,簡(jiǎn)稱CSV),是一種純文本格式,用來(lái)存儲(chǔ)數(shù)據(jù)。在CSV中,數(shù)據(jù)的字段由逗號(hào)分開,程序通過(guò)讀取文件重新創(chuàng)建正確的字段,方法是每次遇到逗號(hào)時(shí)開始新一段數(shù)據(jù)。由于它是一種常見(jiàn)而簡(jiǎn)單的文件格式,CSV文件通常用于不同的計(jì)算機(jī)軟件或同一軟件不同的模塊間進(jìn)行數(shù)據(jù)傳遞交換。很多數(shù)據(jù)庫(kù)程序和電子表格程序都支持CSV文件格式。CSV文件用來(lái)做數(shù)據(jù)存儲(chǔ)容量比XML小,功能比TXT強(qiáng),但是CSV文件仍不具備完整描述關(guān)系型數(shù)據(jù)的能力,它不包含關(guān)系型數(shù)據(jù)中的數(shù)據(jù)域信息,僅僅保存了數(shù)據(jù)域的名稱信息,這樣就難以精確從CSV文件中反序列化成一個(gè)關(guān)系型記錄集。
發(fā)明內(nèi)容關(guān)系型數(shù)據(jù)的序列化包括二進(jìn)制和字符串兩種,二進(jìn)制序列化不便于信息交換。字符串序列化則便于數(shù)據(jù)交換。常見(jiàn)的字符串序列化技術(shù)有XML、CSV等。XML序列化較為復(fù)雜,而CSV格式則較為簡(jiǎn)單。但是CSV序列化是一種"有損"序列化。本發(fā)明的目的是提供一種改進(jìn)型的CSV文件,克服CSV文件格式的弱點(diǎn),精確描述一個(gè)關(guān)系型記錄集,為計(jì)算機(jī)軟件之間進(jìn)行表格數(shù)據(jù)傳遞提供一個(gè)統(tǒng)一的、簡(jiǎn)單的標(biāo)準(zhǔn)的用于描述關(guān)系數(shù)據(jù)的增強(qiáng)型CSV文件格式。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,采用CSV的基本標(biāo)記方式,根據(jù)元數(shù)據(jù)的自描述能力,把一個(gè)關(guān)系型記錄集完整的進(jìn)行序列化,文件格式把記錄集的一行序列化為一個(gè)不包含回車換行符號(hào)的字符序列,具體步驟如下文件格式包含兩個(gè)部分1)元數(shù)據(jù)段;2)數(shù)據(jù)段;其中1)元數(shù)據(jù)段定義字段信息,元數(shù)據(jù)部分每行都是一個(gè)簡(jiǎn)短的CSV文件,其中字段定義,根據(jù)具體情況存在多行,字段定義采用如下語(yǔ)法〈字段名稱=數(shù)據(jù)類型>,〈字段長(zhǎng)度>,〈顯示標(biāo)簽>,〈編輯掩碼>,〈顯示長(zhǎng)度>,〈字段類型>,〈缺省值>,字段長(zhǎng)度規(guī)則字符串型字段的長(zhǎng)度為最大字符數(shù);數(shù)值型和二進(jìn)制型字段長(zhǎng)度統(tǒng)一為零;數(shù)據(jù)類型包括Autoinc,Integer,Float,String,WideString,DateTime,Blob,Memo,Currency,Boolean;2)數(shù)據(jù)段包含兩部分字段排列順序信息行、數(shù)據(jù)行,其中字段排列順序信息行以逗號(hào)分隔各標(biāo)題,每個(gè)字段名放在兩個(gè)引號(hào)中間,格式為"〈FieldlC即tion〉",[〃〈Field2C即tion〉〃],[......]數(shù)據(jù)行列出對(duì)應(yīng)的字段值,字段值放在雙引號(hào)之間,字段值之間用逗號(hào)分隔格式為〃〈FieldlValue〉〃,〃〈Field2Value〉〃,〈……>,數(shù)據(jù)行中的編碼規(guī)則是(l)"轉(zhuǎn)為""(兩個(gè)引號(hào)表示一個(gè)引號(hào));(2)%轉(zhuǎn)為%%(兩個(gè)%表示一個(gè));(3)回車用%c表示;(4)換行用%n表示;(5)Unicode用UTF-8編碼;(6)二進(jìn)制數(shù)據(jù)用MME編碼;(7)時(shí)間類型用匪/DD/YYYY/HH/mm/SS/sss格式表示。本發(fā)明的優(yōu)異效果是與現(xiàn)有技術(shù)相比,本發(fā)明采用上述編碼格式的文件具有人機(jī)可讀性,避免歧義,可以被支持CSV格式的程序解析,解碼算法簡(jiǎn)單,便于數(shù)據(jù)流讀取,可廣泛應(yīng)用于各類系統(tǒng)進(jìn)行表格數(shù)據(jù)交換。圖1是關(guān)系型數(shù)據(jù)轉(zhuǎn)增強(qiáng)型CSV文件算法流程圖;圖2是一份完整的增強(qiáng)型CSV文件。具體實(shí)施例方式本發(fā)明的一種用于描述關(guān)系數(shù)據(jù)的增強(qiáng)型CSV文件格式,含兩個(gè)部分1)元數(shù)據(jù)段2)數(shù)據(jù)段。1)元數(shù)據(jù)段定義字段信息。元數(shù)據(jù)部分每行都是一個(gè)簡(jiǎn)短的CSV文件。其中字段定義根據(jù)具體情況可能存在多行。字段定義采用如下語(yǔ)法,〈字段名稱=數(shù)據(jù)類型>,〈字段長(zhǎng)度>,〈顯示標(biāo)簽>,〈編輯掩碼>,〈顯示長(zhǎng)度>,〈字段類型>,〈缺省值>,字段長(zhǎng)度規(guī)則字符串型字段的長(zhǎng)度為最大字符數(shù);數(shù)值型和二進(jìn)制型字段長(zhǎng)度統(tǒng)一為零。數(shù)據(jù)類型包括Autoinc,Integer,Float,String,WideString,DateTime,Blob,Memo,Currency,Boolean。2)數(shù)據(jù)段包含兩部分字段排列順序信息行、數(shù)據(jù)行(多行)。其中字段排列順序信息行以逗號(hào)分隔各標(biāo)題,每個(gè)字段名放在兩個(gè)引號(hào)中間,格式為"〈FieldlC即tion〉",[〃〈Field2C即tion〉〃],[......]數(shù)據(jù)行列出對(duì)應(yīng)的字段值,字段值放在雙引號(hào)之間,字段值之間用逗號(hào)分隔〃〈FieldlValue〉〃,〃〈Field2Value〉〃,〈......>,4數(shù)據(jù)行中的編碼規(guī)則是l)"轉(zhuǎn)為""(兩個(gè)引號(hào)表示一個(gè)引號(hào))2)%轉(zhuǎn)為%%(兩個(gè)%表示一個(gè))3)回車用%c表示4)換行用^n表示5)Unicode用UTF-8編碼6)二進(jìn)制數(shù)據(jù)用MME編碼7)時(shí)間類型用匪/DD/YYYY/HH/mm/SS/sss格式表示實(shí)施例為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。以一個(gè)員工信息表為例,其字段數(shù)據(jù)類型如下表<table>tableseeoriginaldocumentpage5</column></row><table>第一步生成文件頭如下(包括版本標(biāo)識(shí))"@@FILEVERSI0N@@","300"第二步生成元數(shù)據(jù)定義節(jié)如下所示@@TABLEDEFSTART@@"員工編號(hào)=String,50,〃〃員工編號(hào)"姓名=String,50,〃〃姓名〃〃,〃〃性別=String,6,〃〃性別〃〃,〃〃'出生日期二DateTime,O,〃〃出生日期'工資=Currency,0,""性別"",〃'',"""",20,Data,'〃,20,Data,〃〃",6,Data,""""〃,"""",6,Data,工資〃〃,6,Data,〃第三步生成索引定義節(jié)@@INDEXDEFSTART@@〃〃員工編號(hào)〃,〃ASC"〃@@INDEXDEFEND@@〃第四步結(jié)束元數(shù)據(jù)段,添加如下內(nèi)容〃@@TABLEDEFEND@@〃第五步生成數(shù)據(jù)段〃員工編號(hào)〃,〃姓名〃,〃性別〃,〃出生日期〃,〃工資",〃001〃,〃張剛〃,〃男〃,〃12/26/1977〃,〃01/01/2001〃,〃3000〃,〃002〃,〃李梅〃,〃女〃,〃07/07/1978〃,〃01/01/1990〃,〃4000〃。權(quán)利要求一種用于描述關(guān)系數(shù)據(jù)的增強(qiáng)型CSV文件格式,其特征在于,采用CSV的基本標(biāo)記方式,根據(jù)元數(shù)據(jù)的自描述能力,把一個(gè)關(guān)系型記錄集完整的進(jìn)行序列化,文件格式把記錄集的一行序列化為一個(gè)不包含回車換行符號(hào)的字符序列,具體步驟如下文件格式包含兩個(gè)部分1)元數(shù)據(jù)段;2)數(shù)據(jù)段;其中1)元數(shù)據(jù)段定義字段信息,元數(shù)據(jù)部分每行都是一個(gè)簡(jiǎn)短的CSV文件,其中字段定義,根據(jù)具體情況存在多行,字段定義采用如下語(yǔ)法<字段名稱=數(shù)據(jù)類型>,<字段長(zhǎng)度>,<顯示標(biāo)簽>,<編輯掩碼>,<顯示長(zhǎng)度>,<字段類型>,<缺省值>,字段長(zhǎng)度規(guī)則字符串型字段的長(zhǎng)度為最大字符數(shù);數(shù)值型和二進(jìn)制型字段長(zhǎng)度統(tǒng)一為零;數(shù)據(jù)類型包括Autoinc,Integer,F(xiàn)loat,String,WideString,DateTime,Blob,Memo,Currency,Boolean;2)數(shù)據(jù)段包含兩部分字段排列順序信息行、數(shù)據(jù)行,其中字段排列順序信息行以逗號(hào)分隔各標(biāo)題,每個(gè)字段名放在兩個(gè)引號(hào)中間,格式為″<Field1Caption>″,[″<Field2Caption>″],[……]數(shù)據(jù)行列出對(duì)應(yīng)的字段值,字段值放在雙引號(hào)之間,字段值之間用逗號(hào)分隔格式為″<Field1Value>″,″<Field2Value>″,<……>,數(shù)據(jù)行中的編碼規(guī)則是(1)″轉(zhuǎn)為″″(兩個(gè)引號(hào)表示一個(gè)引號(hào));(2)%轉(zhuǎn)為%%(兩個(gè)%表示一個(gè));(3)回車用%c表示;(4)換行用%n表示;(5)Unicode用UTF-8編碼;(6)二進(jìn)制數(shù)據(jù)用MIME編碼;(7)時(shí)間類型用MM/DD/YYYY/HH/mm/SS/sss格式表示。全文摘要本發(fā)明提供一種用于描述關(guān)系數(shù)據(jù)的增強(qiáng)型CSV文件格式,采用CSV的基本標(biāo)記方式,根據(jù)元數(shù)據(jù)的自描述能力,把一個(gè)關(guān)系型記錄集完整的進(jìn)行序列化,文件格式把記錄集的一行序列化為一個(gè)不包含回車換行符號(hào)的字符序列,本發(fā)明的格式是以字符序列描述關(guān)系型數(shù)據(jù)的文件格式,特點(diǎn)是方便異構(gòu)信息系統(tǒng)間的數(shù)據(jù)交換;結(jié)構(gòu)自描述;平臺(tái)無(wú)關(guān)性;結(jié)構(gòu)緊湊、健壯;語(yǔ)法簡(jiǎn)單、嚴(yán)謹(jǐn);人機(jī)可讀性;支持Unicode。文檔編號(hào)G06F17/30GK101789013SQ20101010598公開日2010年7月28日申請(qǐng)日期2010年2月4日優(yōu)先權(quán)日2010年2月4日發(fā)明者王興山,趙啟杰申請(qǐng)人:浪潮集團(tuán)山東通用軟件有限公司