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