怎样跨库跨表导出JSON数据_结构与数据分离提取
MySQL原生支持用mysqldump --tab将结构.sql和数据.txt分导至服务端本地目录需FILE权限跨库表导JSON须先分结构与数据再转换避免类型丢失、NULL及时间格式问题。用 mysqldump --tab 导出结构和数据到不同目录mysql 原生支持把表结构.sql和数据.txt分开导出但默认不生成 json。想跨库跨表做结构与数据分离得先用 mysqldump 拆出原始文件再转 json —— 这是最稳的起点。关键不是“一步导 JSON”而是“先分再转”否则字段类型丢失、NULL 处理错、时间格式乱。mysqldump --no-data --databases db1 db2 schema.sql只导结构含 CREATE DATABASE 和 CREATE TABLEmysqldump --tab/tmp/ --fields-terminated-by --lines-terminated-by db1 table_a table_b每个表生成 table_a.sql建表语句和 table_a.txt纯数据制表符分隔注意--tab 要求 MySQL 有 FILE 权限且目标路径必须是服务端本地路径不是你本地机器用 SELECT ... INTO OUTFILE 配合 JSON_OBJECT 直接吐 JSON 行如果只要数据不要建表语句且 MySQL ≥ 5.7JSON_OBJECT 是最轻量的方案。它能按字段名动态拼 JSON 对象避免手写字符串拼接出错。但别直接 SELECT JSON_OBJECT(id, id, name, name) FROM t 全表查——大表会 OOM。得加条件或分页。SELECT CONCAT([, GROUP_CONCAT(JSON_OBJECT(id, id, title, title) SEPARATOR ,), ]) FROM posts WHERE status 1 LIMIT 1000拼成数组适合小结果集更安全的做法是用游标或应用层分批每次查 500 行每行 JSON_OBJECT输出一行一个 JSON 对象NDJSON 格式注意JSON_OBJECT 会把 NULL 转成 null但空字符串 还是 时间字段如 created_at 默认转为 2024-03-15T08:22:33.000Z 格式取决于时区设置跨库 JOIN 导出 JSON 时字段名冲突怎么破比如 SELECT JSON_OBJECT(id, a.id, id, b.id) 会报错JSON_OBJECT 不允许重复键名。跨库表关联时同名字段如都叫 id、name必须显式重命名。不能靠应用层后期改 key因为导出阶段就要定型。结构一旦写死下游解析就难改。 今天学点啥 秘塔AI推出的AI学习助手