mysql中存储的是json文件,如何导出json文件
本文内容:
- 1.将JSON、Text、XML、CSV数据文件导入MySQL
- 2.如何将json数据放入mysql
- 3、从用户界面接收到的json数据如何存储到mysql数据库中
将 JSON、Text、XML、CSV 数据文件导入 MySQL
将外部数据导入数据库是数据库应用中非常常见的需求。其实这就是数据管理和使用中ETL
(Extract,
transformation,
load)的L
(Load)部分,即一个数据的转换(格式)一定的结构或格式)将数据导入到目标(例如数据库,这里我们讨论MySQL)。
ETL
流程
本文讨论如何轻松地将多种格式(JSON、
文本、
XML、
CSV)的数据导入MySQL。
本文亮点:
将文本文件(包括CSV文件)导入MySQL
将XML文件导入MySQL
将JSON文件导入MySQL
使用表使用表桌面在此基于假设文本
文件和 CSV
文件具有相对标准化的格式(正确的
格式)。例如,每行中的每个数据字段(field)都由公共字符分隔(例如制表符:
\t)。
所以首先你需要根据你的数据格式(有哪些字段)设计数据库对应的表
(Schema)。
例如,要处理的文本或CSV文件使用\t字符作为分隔符。每行包含三个数据字段:id、
name 和
balance。那么我们需要先将其添加到数据库中。在以下位置创建此表:
CREATE
TABLE
where(id
INT,
name
VARCHAR(255),
balanceDECIMAL(8,4));
创建成功后即可导入。过程非常简单:
LOAD
DATA
LOCAL
INFILE
'文件路径(如~/file.csv)'
LEINTOB somebody
FieldsmterMulated
作者
'\ T'
[添加者
by
' "'"' (可选)]❙❀❀❀
'\n'
( id,
name,
balance)
这里注意,我们需要启用本地数据文件MySQL配置参数才能导入成功。原因是你在MySQL手册中看到了这一点:
LOCAL
works
only
if
your
server
yourserver
两个
均已
配置
以允许
se。
例如
was
已启动
与
--local -infile=0,
LOCAL
no
no
工作。
工作。
1.6。
“安全
问题
和
下载
数据
本地”。
如何放置json数据
我们知道JSON是一种轻量级的数据交互格式,大多数NO SQL数据库都使用JSON进行存储。 MySQL从5.7版本开始支持以JSON格式存储数据,并且添加了许多新的JSON函数。 MySQL 8.0引入了一个新函数JSON_TABLE,可以将JSON转换为TABLE,实现JSON到表的转换。
示例1
我们来看一个简单的示例:
两级JSON对象的简单定义
mysql set @ytt='{"name":[{"a":"ytt","b":"action"}, {"a":"dble","b":"shard"},{" a":"mysql","b":"oracle"}]}';查询OK,影响0行(0.00s)
第一级:
mysql select json_keys(@ytt);+- - - --------------+| json_keys(@ytt) |+----------------+| ["name"] |+ ------------------+1 行顺序(0.00 秒)
第二级:
mysql select json_keys(@ytt , '$.name[0] ');+--------------------------------+| json_keys(@ytt,'$.name[0]') | json_keys(@ytt,'$.name[0]') | +----------------------------------------+| ["a", "b"] |+------- -------------------------+1 行串联 (0.00 s)
我们使用MySQL 8.0的JSON_TABLE文件来转换@ytt。
mysql select * from json_table(@ytt,'$.name[*]' columns (f1 varchar(10) 路径 '$.a', f2 varchar(10) 路径 '$.b')) as tt;
+--------+--------+
| f1 | f2 |
+--------+--------+
| ytt |行动|
|双|碎片 |
| mysql | mysql | oracle |
+-------+---------+
连续 3 行(0.00 秒)
示例 2
让我们看另一个更复杂的示例使用 EXPLAIN JSON 结果集。
JSON 字符串@json_str1。
set @json_str1 = ' { "query_block": { "select_id": 1, "cost_info": { "query_cost": "1.00" }, "table": { "table_name": "bigtable", "access_type": "const ", "possible_keys": [ "id" ], "key": "id", "used_key_parts": [ "id" ], "key_length": "8", "ref": [ " const" ], "rows_examined_per_scan ": 1, "rows_productd_per_join": 1, "filtered": "100.00", "cost_info": { "read_cost": "0.00", "eval_cost": "0.20", "prefix_cost": "0.0 0", "data_read_per_join " " : "176" "used_columns": [ "id", "log_time", "str1", "str2" ] } }}';
第一级:
mysql select json_keys(@json_str1) as 'first_object';+----------------+| first_object |+----------------+| ["query_block"] | +-----------------+1 行串联 (0.00 秒)
第二级:
mysql 选择 json_keys(@json_str1,'$.query_block') as 'second_object';+-------------------------------------------- - --- ------+|第二个对象,id“] |+-------------------------------------------------------- --( 0.00s) 之间+1行
第三级:
mysql select json_keys(@json_str1,'$.query_block.table') as 'third_object'\G******** ** ***** ************ 第一行 **************************third_object : ["key ", "reference", "filtered", "cost_data", "key_length", "table_name", "access_type", "used_columns", "possible_keys","used_key_parts","studied_rows_per_check","rows_productd_per_join"] 系列中的 1 行( 0.01s)
第 4 级:
mysql 选择 json_extract(@json_str1,'$.query_block.table.cost_info') as 'forth_object'\G********* ** *** ************* 第 1 行 **************************forth_object: {" eval_cost":"0.20 ","read_cost":"0.00","prefix_cost":"0.00","data_read_per_join":"176"}1行串联(0.00s)
然后把这个JSON字符串转换为数组。
SELECT * FROM JSON_TABLE(@json_str1,
"$.query_block"
COLUMNS(
rowid FOR ORDINALITY,
INSERT PATH '$.table'♺
11 0) 路径'$.key',
a1_2 varchar(100) PATH '$.ref[0]',
a1_3 varchar(100) PATH '$.filtered',
内部路径'$.cost_info'
列 (
a2_1 varchar(100) PATH '$.eval_cost',
a2_2 varchar(100) PATH '$.read_cost',
a2_1 varchar(100) varTH_a2_0',
a2_ 4 varchar (100) 路径 '$.data_read_per_join'
),
a3 varchar(100) 路径 '$.key_length',
a4) 路径名称(10',0)。
a5 varchar(100) 路径 '$.access_type',
a6 varchar(100) 路径 '$.used_key_parts[0]',
a7 varchar(100) 路径 '$.rows_scanned' a8 varchar (100) 路径 '$.rows_productd_per_join',
a9 varchar(100) 路径 '$.key'
),
内部路径 '$.cost_info'
❝n b1_1 varchar(100) 路径'$.query_cost'
),
c INT 路径 "$.select_id"
)
) AS tt;
+--------+------+-------------------------+------ +---- ---+------+------+------------+--------+----- - ------++------+------+------+------+
|厚脸皮| a1_1 | a1_2 | a1_3 | a2_1 | a2_2 | a2_3 | a2_4 | a3| a4| a5| a6 | a7| a8| a9| b1_1 | c |
+--------+--------+--------+------- --+-------+--- -- --+------+------+------+------------+- ------+---- --+ ------+------+------+------+------+
| 1 |编号 |常量 | 100.00 | 0.20 | 0.20 0.00 | 0.00 0.00 | 0.00 176 | 176 8 |大桌子|常量 |编号 | 1 | 1 |编号 |空 | 1 |
| 1 |空 |空 |空 |空 |空 |空 |空 |空 |空|空|空|空|空|空| 1.00 | 1 --+--------+------+------+------+------+--------+-- -- - ------+--------+------+--------+--------+--------+--- ---- + ------+
连续 2 行 (0.00 秒)
当然,JSON_table函数还有其他用途。我不会在这里全部列出。请参阅用户手册了解更多信息。
点击进入图片描述

如何将从用户界面接收到的json数据保存到mysql数据库
Json数据json.loads进来就变成了json对象。需要自己把python对象的字段值去掉,写成sql语句
可以把这个过程封装成一个函数
tuo json
def save_json(json_str):
obj = json.loads(json_str)
sql = 'add to tbl values'("%s")' % ob ['id'] #这里注意编码一定要改成数据库的编码格式
#blabla
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
