网游服务器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")
* 自动索引,首次查询建立索引
* 索引可以是多列组合