0100class.mql 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. CREATE DB IF NOT EXISTS msqldb (
  2. -- 数据库驱动类型,单引号或双引号标记的字符串,
  3. -- 目前支持的类型有 sqlite|mysql ,新的类型需要更新 odbserver
  4. DRIVER : 'sqlite',
  5. -- 数据源定义,单引号或双引号标记的字符串,
  6. -- 不同数据库类型格式不一样,参考相关数据库驱动文档
  7. SOURCE : "file:data/testdb?cache=shared",
  8. -- 附加选项,JSON对象,
  9. -- 通过 odbserver 支持的,不同数据库类型支持的选项可能不同
  10. OPTION : {
  11. "makedir": "auto" -- sqlite 支持,自动创建数据库文件所在目录
  12. }
  13. -- mysql示例
  14. -- driver : "mysql",
  15. -- source : "user:password@tcp(127.0.0.1:3306)/dbname"
  16. )
  17. ;
  18. create class if not exists /mdb () with namespace='mdb'
  19. ;
  20. -- 全量映射(也可以指定固定条件映射部分数据),
  21. -- 实际类中没有数据
  22. -- 查询时自动赋值默认类属性:
  23. -- class: 类名/mdb/dba1,
  24. -- id: 组合映射表主键为字符串,
  25. -- name: 与id相同,
  26. -- day: 当前日期,
  27. -- vtime: 当前时间
  28. -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型
  29. -- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 有且只有 一个元素
  30. -- 支持 bucket 链式表达式
  31. create class if not exists /mdb/dba1 (
  32. rdb bucket {
  33. -- 全表映射
  34. "type" : "msqldb",
  35. -- 指定表名
  36. "table" : "T__matrix__test___422YX2FPSXSLVDA9"
  37. },
  38. ) with nickname='dba1'
  39. ;
  40. -- 条件映射
  41. -- 类中需要有数据,按指定条件映射数据,条件与类数据有关联
  42. -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
  43. -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
  44. -- 支持 bucket 链式表达式
  45. create class if not exists /mdb/dba2 (
  46. xvarchar varchar,
  47. xint int,
  48. xbigint bigint,
  49. xdouble double,
  50. xdate date,
  51. xrdb bucket {
  52. -- 条件映射
  53. "type" : "msqldb",
  54. -- 结构化指定表、字段、条件
  55. -- TODO 后期可解析 sql 语句,方便应用开发
  56. "table" : "T__matrix__test___422YX2FPSXSLVDA9",
  57. "fields": ["字符串", "大整数", "整数", "浮点", {"name":"双浮点","asname":"vdouble"}],
  58. "conds" : {
  59. "and": [{ -- 多条件组合
  60. "like": ["_tokens","%/mtest/%"]},{ -- 常量条件
  61. "or": [{
  62. "=": ["name", {"field":"xvarchar"}]},{ -- 变量条件
  63. "=": ["字符串", {"field":"xvarchar"}]},{
  64. "between": ["strftime('%Y-%m-%d',cast(day as integer)/1000.0+28800,'unixepoch')", "2026-01-01", {"field":"xdate"}]}]}]}, -- sql函数支持
  65. "orderby" : ["字符串", {"name":"vdouble","reverse":true}] -- 指定排序,保证 last row 输出稳定结果
  66. -- TODO "groupby","having"
  67. } "rdb test",
  68. xmap map<varchar, varchar>,
  69. xlist list<varchar>,
  70. xset set<varchar>,
  71. indexes(xvarchar, xint, xbigint, xdouble, xmap, xlist, xset),
  72. keys(xvarchar)
  73. ) with nickname='dba2'
  74. ;