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

如何将JSON文件转换为SQLite数据库

如何解决《如何将JSON文件转换为SQLite数据库》经验,为你挑选了1个好方法。

如果我有一些示例数据,如何将其放入SQLite(最好是全自动的)中?

{"uri":"/","user_agent":"example1"}
{"uri":"/foobar","user_agent":"example1"}
{"uri":"/","user_agent":"example2"}
{"uri":"/foobar","user_agent":"example3"}

benaryorg.. 9

我发现最简单的方法是使用jq和CSV作为中间格式。

编辑:如所指出的(感谢@Leo),原始问题确实显示了以换行符分隔的JSON对象,每个对象都各自符合rfc4627,但并非全部以该格式结合在一起。 通过使用预处理文件,jq可以处理对象的单个JSON数组,其处理方式几乎相同jq '.[]' preprocessed.json。如果您碰巧正在处理JSON文本序列(rfc7464),幸运的是jq也支持该--seq参数。

获取CSV

首先将数据写入文件。我将在这里假设data.json

然后使用jq以下命令构造标题:

% head -1 data.json | jq -r 'keys | @csv'
"uri","user_agent"

head -1是因为我们只需要一行。 jq-r使输出为纯字符串,而不是包装CSV的JSON-String。然后,我们调用内部函数keys以数组的形式获取输入的键。我们将其发送给@csv格式化程序,该格式化程序输出一个带有引号CSV格式的标头的字符串。

然后,我们需要构造数据。

% jq -r '[.[]] | @csv' 

现在,我们使用整个输入并使用来解构关联数组(map).[],然后将其放回简单数组中[…]。这基本上将我们的字典转换为键数组。发送给@csv格式化程序后,我们再次获得一些CSV。

综上所述,我们得到一个单线形式:

% (head -1 data.json | jq -r 'keys | @csv' && jq -r '[.[]] | @csv'  data.csv

如果您需要即时转换数据,即没有文件,请尝试以下操作:

% cat data.json | (read -r first && jq -r '(keys | @csv),( [.[]] | @csv)' <<<"${first}" && jq -r '[.[]] | @csv')
加载到SQLite

打开一个SQLite数据库:

sqlite3 somedb.sqlite

现在,在交互式外壳程序中执行以下操作(假设您将CSV写到data.csv并希望在名为的表中进行my_table):

.mode csv
.import data.csv my_table

现在,关闭外壳,然后再次将其打开以提供清洁的环境。您现在可以轻松地SELECT从数据库中执行任何操作。

放在一起

在那里有一个腹水记录:



1> benaryorg..:

我发现最简单的方法是使用jq和CSV作为中间格式。

编辑:如所指出的(感谢@Leo),原始问题确实显示了以换行符分隔的JSON对象,每个对象都各自符合rfc4627,但并非全部以该格式结合在一起。 通过使用预处理文件,jq可以处理对象的单个JSON数组,其处理方式几乎相同jq '.[]' preprocessed.json。如果您碰巧正在处理JSON文本序列(rfc7464),幸运的是jq也支持该--seq参数。

获取CSV

首先将数据写入文件。我将在这里假设data.json

然后使用jq以下命令构造标题:

% head -1 data.json | jq -r 'keys | @csv'
"uri","user_agent"

head -1是因为我们只需要一行。 jq-r使输出为纯字符串,而不是包装CSV的JSON-String。然后,我们调用内部函数keys以数组的形式获取输入的键。我们将其发送给@csv格式化程序,该格式化程序输出一个带有引号CSV格式的标头的字符串。

然后,我们需要构造数据。

% jq -r '[.[]] | @csv' 

现在,我们使用整个输入并使用来解构关联数组(map).[],然后将其放回简单数组中[…]。这基本上将我们的字典转换为键数组。发送给@csv格式化程序后,我们再次获得一些CSV。

综上所述,我们得到一个单线形式:

% (head -1 data.json | jq -r 'keys | @csv' && jq -r '[.[]] | @csv'  data.csv

如果您需要即时转换数据,即没有文件,请尝试以下操作:

% cat data.json | (read -r first && jq -r '(keys | @csv),( [.[]] | @csv)' <<<"${first}" && jq -r '[.[]] | @csv')
加载到SQLite

打开一个SQLite数据库:

sqlite3 somedb.sqlite

现在,在交互式外壳程序中执行以下操作(假设您将CSV写到data.csv并希望在名为的表中进行my_table):

.mode csv
.import data.csv my_table

现在,关闭外壳,然后再次将其打开以提供清洁的环境。您现在可以轻松地SELECT从数据库中执行任何操作。

放在一起

在那里有一个腹水记录:


推荐阅读
  • 如何在mysqlshell命令中执行sql命令行本文介绍MySQL8.0shell子模块Util的两个导入特性importTableimport_table(JS和python版本 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 我想将结果转换为ModelA数组,但没有找到方法。letquery"SELECTt1.columnA,t2.colum ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 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非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • pythonMatplotlib(二)
    Matplotlib+pandas作图一、对csv文件进行提取ruixi.csv对上述表格进行提取并做图画出图像二、对.xlsx进行提取:rui ... [详细]
  • 动量|收益率_基于MT策略的实战分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于MT策略的实战分析相关的知识,希望对你有一定的参考价值。基于MT策略的实战分析 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • Flink使用java实现读取csv文件简单实例首先我们来看官方文档中给出的几种方法:首先我们来看官方文档中给出的几种方法:第一种:Da ... [详细]
author-avatar
三砖先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有