網游服務器csv配置設計
(金慶的專欄 2017.2)
巨人網絡Lua手游服務器中csv配置系統的設計
配置文件為 csv 格式。
csv文件全部放置于 csv/ 目錄。
csv/可以有子目錄。
csv目錄下所有csv文件可以熱更新。
策劃數據也會導出到csv.
csv編碼為utf8帶BOM。
如果不帶BOM,excel打開中文顯示亂碼。
xlsx批量轉為utf8的csv
http://blog.csdn.net/jq0123/article/details/49512877
要求csv解析器允許多行字段,允許雙引號,忽略BOM。
csv解析采用:https://github.com/jinq0123/csv_parser_RFC4180
csv按以下規范建立:
第1行:字段說明,可以多行,可以中文,僅供注釋用。
說明放第1行的好處是:多行說明不影響下面的數據顯示,征途的csv也是說明在先。
第2行:字段名,英文,區分大小寫,盡量不用特殊字符。
同一表內各字段名必須不同。
建議全部小寫,用下劃線連接單詞,如"server_type", "equip_id".
第3行:類型,有3種:string, int, float, 缺省為string, 無法識別也按string處理。
int, float數據缺省值0, 解析有錯時也按0處理。
所有csv加載后,通過以下接口查詢
* 獲取表格 get_table("test/test.csv") -> csv/test/test.csv
* 取全部記錄 table.get_all_records()
* 按索引取記錄(可能多個)
+ 取第1個 table.get_record("field1", val1, "field2", val2)
+ 取多個 table.get_records("field1", val1, "field2", val2)
* 按列名取字段
+ record.get_string("field3")
+ record.get_int("field3")
+ record.get_float("field3")
* 自動索引,首次查詢建立索引
* 索引可以是多列組合
(金慶的專欄 2017.2)
巨人網絡Lua手游服務器中csv配置系統的設計
配置文件為 csv 格式。
csv文件全部放置于 csv/ 目錄。
csv/可以有子目錄。
csv目錄下所有csv文件可以熱更新。
策劃數據也會導出到csv.
csv編碼為utf8帶BOM。
如果不帶BOM,excel打開中文顯示亂碼。
xlsx批量轉為utf8的csv
http://blog.csdn.net/jq0123/article/details/49512877
要求csv解析器允許多行字段,允許雙引號,忽略BOM。
csv解析采用:https://github.com/jinq0123/csv_parser_RFC4180
csv按以下規范建立:
第1行:字段說明,可以多行,可以中文,僅供注釋用。
說明放第1行的好處是:多行說明不影響下面的數據顯示,征途的csv也是說明在先。
第2行:字段名,英文,區分大小寫,盡量不用特殊字符。
同一表內各字段名必須不同。
建議全部小寫,用下劃線連接單詞,如"server_type", "equip_id".
第3行:類型,有3種:string, int, float, 缺省為string, 無法識別也按string處理。
int, float數據缺省值0, 解析有錯時也按0處理。
所有csv加載后,通過以下接口查詢
* 獲取表格 get_table("test/test.csv") -> csv/test/test.csv
* 取全部記錄 table.get_all_records()
* 按索引取記錄(可能多個)
+ 取第1個 table.get_record("field1", val1, "field2", val2)
+ 取多個 table.get_records("field1", val1, "field2", val2)
* 按列名取字段
+ record.get_string("field3")
+ record.get_int("field3")
+ record.get_float("field3")
* 自動索引,首次查詢建立索引
* 索引可以是多列組合