参考文档:MySQL JSON_TABLE() 函数使用指南
背景
数据库访问导出数据,并不都是可以直连mysql的。这时候就需要考虑如何将查询出来的数据转换为自己需要的数据格式类型。
几种典型的情况
1.没有权限,只能转换成jsonobject来手动处理
这时通常是没有权限的,只能通过select查看。考虑导出成json格式数据,这样通过java代码直接解析转换成对象即可。
SQL
SELECT JSON_OBJECT(
'code', t.code,
'name', t.name,
'address',t.address ,
'create_time',t.create_time ,
'description',t.description
)
AS json_data
from
test t
where
t.code > 0 \G;
结果格式
*************************** 1. row ***************************
json_data: {"description": "aaa","address": "1栋1单元", "code": 1,"create_time": "2024-03-06 09:34:58","name": "星期一","company": "一公司"}
*************************** 2. row ***************************
json_data: {"description": "bbb","address": "1栋1单元", "code": 2,"create_time": "2024-03-06 10:22:38","name": "星期二","company": "二公司"}
*************************** 3. row ***************************
json_data: {"description": "ccc","address": "1栋1单元", "code": 3,"create_time": "2024-03-06 10:24:31","name": "星期三","company": "三公司"}
SQL说明
只需把select * from table 中的*替换成JSON_OBJECT即可。
JSON_OBJECT的格式
JSON_OBJECT('key','value'),value取表字段,后面要跟一个as name,这个name是需要的。\G是为了格式化,更好的看数据和使用。因为数据比较少,所以没有研究如何生成一个jsonarray的方式。
再使用JSONObject.parseObject(str,class)进行数据转换。
2.有部分权限,可以输出文件并导出文件
select * from test into outfile '/Users/admin/tt/test.csv';
没权限啊,测不动
导出Excel后,就非常轻松的可以转化数据为SQL了。
1)可以走Java解析Excel,生成SQL
2)可以直接用mysql客户端导入Excel,然后再将导入的数据生成SQL。