Code前端首页关于Code前端联系我们

mysql中存储的是json文件,如何导出json文件

terry 2年前 (2023-09-30) 阅读数 45 #Mysql
文章标签 Mysql

本文内容:

  • 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 ","re​​ad_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前端网发表,如需转载,请注明页面地址。

热门