热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

json文件存入mysql,怎么导出json文件

本文目录一览:1、如何将 JSON,Text,XML,CSV 数据文件导入 MySQL

本文目录一览:


  • 1、如何将 JSON,Text,XML,CSV 数据文件导入 MySQL


  • 2、怎么在mysql中放入json数据


  • 3、如何将从接口取到的json数据存入mysql数据库

如何将 JSON,Text,XML,CSV 数据文件导入 MySQL

将外部数据导入(import)数据库是在数据库应用中一个很常见的需求。其实这就是在数据的管理和操作中的ETL

(Extract,

transform,

load)的L

(Load)部分,也就是说,将特定结构(structure)或者格式(format)的数据导入某个目的地(比如数据库,这里我们讨论MySQL)。

ETL

Process

本文要讨论的内容,是如何方便地将多种格式(JSON,

Text,

XML,

CSV)的数据导入MySQL之中。

本文大纲:

将Text文件(包括CSV文件)导入MySQL

将XML文件导入MySQL

将JSON文件导入MySQL

使用MySQL

workbench的Table

Data

Export

and

Import

Wizard进行JSON或CSV文件的导入导出

1.

将Text文件(包括CSV文件)导入MySQL

这里我们的讨论是基于一个假定,Text

file和CSV

file是有着比较规范的格式的(properly

formatted),比如说每行的每个数据域(field)之间是由一个共同的分隔符(比如tab:

\t)分隔的。

那么首先,你需要根据你的数据的格式(有哪些域),来设计好数据库的对应的表

(的Schema)。

举个例子,要处理的Text文件或者CSV文件是以\t作为分隔符的,每行有id,

name,

balance这么三个数据域,那么首先我们需要在数据库中创建这个表:

CREATE

TABLE

sometable(id

INT,

name

VARCHAR(255),

balance

DECIMAL(8,4));

创建成功以后就可以导入了。操作方式很简单:

LOAD

DATA

LOCAL

INFILE

'你的文件路径(如~/file.csv)'

INTO

TABLE

sometable

FIELDS

TERMINATED

BY

'\t'

[ENCLOSED

BY

'"'(可选)]

LINES

TERMINATED

BY

'\n'

(id,

name,

balance)

这里要注意的是,我们需要开启local-infile这个MySQL的配置参数,才能够成功导入。究其原因,从MySQL的Manual中可以看到这么一段话:

LOCAL

works

only

if

your

server

and

your

client

both

have

been

configured

to

permit

it.

For

example,

if

mysqld

was

started

with

--local-infile=0,

LOCAL

does

not

work.

See

Section

6.1.6,

“Security

Issues

with

LOAD

DATA

LOCAL”.

怎么在mysql中放入json数据

我们知道,JSON是一种轻量级的数据交互的格式,大部分NO SQL数据库的存储都用JSON。MySQL从5.7开始支持JSON格式的数据存储,并且新增了很多JSON相关函数。MySQL 8.0 又带来了一个新的把JSON转换为TABLE的函数JSON_TABLE,实现了JSON到表的转换。

举例一

我们看下简单的例子:

简单定义一个两级JSON 对象

mysql set @ytt='{"name":[{"a":"ytt","b":"action"},  {"a":"dble","b":"shard"},{"a":"mysql","b":"oracle"}]}';Query OK, 0 rows affected (0.00 sec)

第一级:

mysql select json_keys(@ytt);+-----------------+| json_keys(@ytt) |+-----------------+| ["name"]        |+-----------------+1 row in set (0.00 sec)

第二级:

mysql select json_keys(@ytt,'$.name[0]');+-----------------------------+| json_keys(@ytt,'$.name[0]') |+-----------------------------+| ["a", "b"]                  |+-----------------------------+1 row in set (0.00 sec)

我们使用MySQL 8.0 的JSON_TABLE 来转换 @ytt。

mysql select * from json_table(@ytt,'$.name[*]' columns (f1 varchar(10) path '$.a', f2 varchar(10) path '$.b')) as tt;

+-------+--------+

| f1    | f2     |

+-------+--------+

| ytt   | action |

| dble  | shard  |

| mysql | oracle |

+-------+--------+

3 rows in set (0.00 sec)

举例二

再来一个复杂点的例子,用的是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_produced_per_join": 1,      "filtered": "100.00",      "cost_info": {        "read_cost": "0.00",        "eval_cost": "0.20",        "prefix_cost": "0.00",        "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 row in set (0.00 sec)

第二级:

mysql select json_keys(@json_str1,'$.query_block') as 'second_object';+-------------------------------------+| second_object                       |+-------------------------------------+| ["table", "cost_info", "select_id"] |+-------------------------------------+1 row in set (0.00 sec)

第三级:

mysql  select json_keys(@json_str1,'$.query_block.table') as 'third_object'\G*************************** 1. row ***************************third_object: ["key","ref","filtered","cost_info","key_length","table_name","access_type","used_columns","possible_keys","used_key_parts","rows_examined_per_scan","rows_produced_per_join"]1 row in set (0.01 sec)

第四级:

mysql select json_extract(@json_str1,'$.query_block.table.cost_info') as 'forth_object'\G*************************** 1. row ***************************forth_object: {"eval_cost":"0.20","read_cost":"0.00","prefix_cost":"0.00","data_read_per_join":"176"}1 row in set (0.00 sec)

那我们把这个JSON 串转换为表。

SELECT * FROM JSON_TABLE(@json_str1,

"$.query_block"

COLUMNS(

rowid FOR ORDINALITY,

NESTED PATH '$.table'

COLUMNS (

a1_1 varchar(100) PATH '$.key',

a1_2 varchar(100) PATH '$.ref[0]',

a1_3 varchar(100) PATH '$.filtered',

nested path '$.cost_info'

columns (

a2_1 varchar(100) PATH '$.eval_cost' ,

a2_2 varchar(100) PATH '$.read_cost',

a2_3 varchar(100) PATH '$.prefix_cost',

a2_4 varchar(100) PATH '$.data_read_per_join'

),

a3 varchar(100) PATH '$.key_length',

a4 varchar(100) PATH '$.table_name',

a5 varchar(100) PATH '$.access_type',

a6 varchar(100) PATH '$.used_key_parts[0]',

a7 varchar(100) PATH '$.rows_examined_per_scan',

a8 varchar(100) PATH '$.rows_produced_per_join',

a9 varchar(100) PATH '$.key'

),

NESTED PATH '$.cost_info'

columns (

b1_1 varchar(100) path '$.query_cost'

),

c INT path "$.select_id"

)

) AS tt;

+-------+------+-------+--------+------+------+------+------+------+----------+-------+------+------+------+------+------+------+

| rowid | 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 | id   | const | 100.00 | 0.20 | 0.00 | 0.00 | 176  | 8    | bigtable | const | id   | 1    | 1    | id   | NULL |    1 |

|     1 | NULL | NULL  | NULL   | NULL | NULL | NULL | NULL | NULL | NULL     | NULL  | NULL | NULL | NULL | NULL | 1.00 |    1 |

+-------+------+-------+--------+------+------+------+------+------+----------+-------+------+------+------+------+------+------+

2 rows in set (0.00 sec)

当然,JSON_table 函数还有其他的用法,我这里不一一列举了,详细的参考手册。

请点击输入图片描述

如何将从接口取到的json数据存入mysql数据库

json的数据json.loads进来以后会变成一个json的对象,你需要自己把python对象中的字段值取出来,拼成sql语句

你可以把这个过程封装成一个函数

import json

def save_json(json_str):

obj = json.loads(json_str)

sql = 'insert into tbl values ("%s")' % obj['id'] #这里注意编码,要转成数据库的编码格式

#blabla


推荐阅读
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
author-avatar
ccmm6688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有