SQLite如何处理CSV 虚拟表(三十七)

返回:SQLite—系列文章目录   

上一篇:SQLite的DBSTAT 虚拟表(三十六)

下一篇:SQLite的扩展函数Carray()表值函数(三十八)

RFC4180格式是一种文本文件格式,被用于表格数据间的交互,也可将表格数据转化为纯文本文件进行存储。RFC是“请求评论”,是互联网标准化组织IETF用于记录技术规范、协议以及流程的标准文件的编号。

RFC4180规范定义了一种逗号分隔值(CSV)格式,具体描述了文本文件中的数据格式、分隔符、行尾符等,使得该格式成为一种普遍使用的标准格式。

该格式使用逗号分隔字段,每一行代表一个新的数据行,数据行通常使用回车换行来标识行的结束。列头通常在第一行表述并在数据行之前出现。如果某列出现引号字符,则整个列使用引号括起来。如果引号字符本身是列值,则需要用两个引号字符代替。这个规范还要求在文件的末尾必须有一个换行符。

RFC4180格式被广泛使用,在数据转换和传输等场景中成为了事实上的标准。由于其简单和易于实现,数据处理程序和工具通常都支持RFC4180格式的读取和导出。

CSV文件格式是一种将数据保存在简单文本文件中的方式,其中各项由逗号分隔,每行代表一个数据记录(record)。文件包含以下定义:详细请查询:RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files

1. 每个记录由一个换行符(CRLF)分隔。每个记录可以包含多个字段(field),逗号分隔。
例子:  
aaa, bbb, ccc CRLF
zzz, yyy, xxx CRLF

2. 文件的最后一个记录可能具有不完整的结束符。例如:
aaa, bbb, ccc CRLF
zzz, yyy, xxx

3. 可以在文件的第一行中定义包含字段名称的标题行,以 "|" 表示字段间隔。该标题行应包含与该文件中记录中的字段对应的字段名称,且应与该文件中的记录具有相同数量的字段。
例如:

field_name, field_name, field_name CRLF
aaa, bbb, ccc CRLF
zzz, yyy, xxx CRLF
 

4. 在标题行和每个记录中,可以使用一个或多个逗号分隔符分隔各个字段。每行的字段数量应在整个文件中保持一致。任何空格都被视为字段的一部分,不能忽略。记录中的最后一个字段不得后跟逗号。
例如:
aaa, bbb, ccc

5. 每个字段可能或可能不用双引号括起来(但有些程序,如Microsoft Excel,根本不使用双引号)。如果字段未用双引号括起来,则字段中不应出现双引号。如果字段未用双引号括起来,则字段中不应出现双引号。例如: 
"aaa", "bbb", "ccc" CRLF
zzz, yyy, xxx

6. 必须用双引号括起包含换行符(CRLF),双引号和逗号的字段。例如:
"aaa", "b CRLF
bb", "ccc" CRLF
zzz, yyy, xxx
7. 如果使用双引号括起字段,则必须在字段前面加上另一个双引号。例如
"aaa", "b""bb", "ccc"
该文档中给出了一个ABNF语法,用于进一步定义CSV文件的格式。

通过下述方法处理CSV虚拟表数据注意使用CSV虚拟表可以用两种方式进行处理:

使用方法如:

CSV 虚拟表读取 RFC 4180 格式的逗号分隔 值,并返回该内容,就好像它是 SQL 的行和列一样 桌子。

CSV 虚拟表对于需要大容量加载的应用程序非常有用 大量逗号分隔的值内容。 CSV 虚拟表也可用作模板源文件 实现其他虚拟表。

CSV 虚拟表未内置到 SQLite 合并中。 它可作为单独的源文件使用,可以编译成可加载的扩展名。 命令行 shell 中 CSV 虚拟表的典型用法如下所示:

.load ./csv
CREATE VIRTUAL TABLE temp.t1 USING csv(filename='thefile.csv');
SELECT * FROM t1;

上面脚本的第一行会导致命令行 shell 读取并激活 CSV 的运行时可加载扩展。对于一个 应用程序,等效的 C 语言 API 为 sqlite3_load_extension()。 请注意,文件扩展名(例如:“.dll”或“.so”或“.dylib”)是 从扩展名文件名中省略。省略文件扩展名是 不是必需的,但它有助于使脚本跨平台。SQLite的 将自动附加相应的扩展名。

上面的第二行创建一个名为“t1”的虚拟表,内容为 参数中命名的文件的内容。的数量和名称 列是通过读取第一行自动确定的 内容。CSV 虚拟表的其他选项提供了以下功能: 从字符串而不是单独的文件中获取 CSV 内容,并给出 程序员可以更好地控制列的数量和名称。 下面详细介绍了这些选项。CSV 虚拟表通常为 创建为 TEMP 表,以便它仅对当前数据库存在 连接,并且不会成为数据库架构的永久部分。 请注意,SQLite 中没有“CREATE TEMP VIRTUAL TABLE”命令。 相反,请在虚拟名称前面加上“temp.”架构前缀 桌子。

该示例的第三行显示了正在使用的虚拟表,要读取 CSV 文件的所有内容。这也许是最简单的用法 虚拟表。CSV 虚拟表可以在任何地方使用 可以使用虚拟表。可以在子查询中使用 CSV 虚拟表, 或常用表表达式或添加 WHERE、GROUP BY、HAVING、ORDER BY、 和 LIMIT 子句。

2. 参数说明

上面的示例显示了一个 filename='thefile.csv' 参数 用于 CSV 虚拟表。但其他论点也是可能的。

  • filename=文件名

    filename= 参数指定一个外部文件,从中 读取 CSV 内容。每个 CSV 虚拟表都必须具有 filename= 参数或 data= 参数,而不能同时具有两者。

  • 数据=文本

    data= 参数指定 TEXT 是文本 CSV 文件的内容。

  • schema=架构

    schema= 参数指定一个 CREATE TABLE 语句, CSV 虚拟表传递到 sqlite3_declare_vtab() 接口 order 定义虚拟表中列的名称。

  • 列=N

    columns=N 参数指定列数 在 CSV 文件中。 如果输入数据包含的列数多于此值, 然后忽略多余的列。如果输入数据包含较少的列, 然后用 NULL 填充额外的列。 如果省略 columns=N 参数,则 读取 CSV 文件以确定列数。

  • header=BOOLEAN
    或只是
    header

    如果 header 参数为 true,则 CSV 文件的第一行 被视为标头而不是数据。CSV 的第二行 file 成为内容的第一行。 如果省略 schema= 选项,则 CSV 的第一行 file 确定列的名称。

3. 列名

虚拟表的列名主要由 schema= 参数确定。 如果省略了 schema= 参数,但标头为 true,则 在 CSV 文件的第一行中找到的值将成为列名。 如果省略了 schema= 参数并且标头为 false,则 这些列被命名为“C0”、“C1”、“C2”等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/319101.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】集成方法---Boosting之AdaBoost

一、Boosting的介绍 1.1 集成学习的概念 1.1.1集成学习的定义 集成学习是一种通过组合多个学习器来完成学习任务的机器学习方法。它通过将多个单一模型(也称为“基学习器”或“弱学习器”)的输出结果进行集成,以获得比单一模型更好的泛化性…

基于t972 Android9 AP6256,如何在设置中添加5G热点选项,并使其正常打开

通过设置的的WiFi热点选项可以知道关键词“2.4GHz”,因此可以其全局搜索,在packages\apps\Settings\res\values\strings.xml文件下找到如下图所示, 从上面注释可以知道,选项按键选择2.4GHz触发的按键关键词是“wifi_ap_choose_2G…

图床搭建GitHub+PicGo+jsdelivr(CDN)+Typora(内附加速工具)

目录 安装PicGo GitHub配置与加速器 配置PicGo 使用typroa 安装PicGo PicGo是一个用于上传图片的客户端,支持拖拽上传、剪贴板上传,功能十分方便。 下载地址: https://github.com/Molunerfinn/PicGo/releases 个人网盘自取版本2.4.0…

nginx变量自定义日志收集

内置变量 $remote_addr;存放了客户端的地址,注意是客户端的公网IP,也就是一家人访问一个网站,则会显示为路由器的公网IP。 $args;变量中存放了URL中的指令 [rootlocalhost conf.d]# cat pc.conf server {listen 80;se…

【UnityRPG游戏制作】RPG项目的背包系统商城系统和BOSS大界面

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

用于复杂任务的 AI 编码引擎:多文件多步骤拆解实现 | 开源日报 No.239

plandex-ai/plandex Stars: 3.1k License: AGPL-3.0 plandex 是一个用于复杂任务的 AI 编码引擎。 使用长时间运行的代理完成跨多个文件且需要多个步骤的任务将大型任务分解为较小子任务,逐一实现,直至完成整个工作帮助处理积压工作、使用陌生技术、摆…

Gateway结合Nacos使用!!!

一、本地结合使用 1. 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 2. bootstarp.yml配置文件 如果Nacos中配置使用yaml格式&…

【牛客网】值周

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分。 因为l<100000000,所以数组开1e8。 唯一需要注意的点就是前面给b[0]单独赋值为1&#xff08;因为如果在循环中给b[0]赋值&…

利用大模型提升个性化推荐的异构知识融合方法

在推荐系统中&#xff0c;分析和挖掘用户行为是至关重要的&#xff0c;尤其是在美团外卖这样的平台上&#xff0c;用户行为表现出多样性&#xff0c;包括不同的行为主体&#xff08;如商家和产品&#xff09;、内容&#xff08;如曝光、点击和订单&#xff09;和场景&#xff0…

iOS 实现类似抖音翻页滚动效果

这里是效果图 参考抖音的滚动效果&#xff0c;需要我们在结束拖动的时候&#xff0c;动画设置偏移量 这里有一个注意点&#xff0c;由于我们是在拖动结束的时候&#xff0c;手动改变tableview的偏移量&#xff0c; 改变了tableView 自身原有的的滚动效果&#xff0c;所以我们…

uniapp乡村社区户籍问外来人员管理系统 微信小程序python+java+node.js+php

基于微信小程序的外来人员管理系统项目的概述设计分析&#xff0c;主要内容有的私教预约平台系统平台的具体分析&#xff0c;进行数据库的是设计&#xff0c;数据采用MySQL数据库&#xff0c;并且对于系统的设计采用比较人性化的操作设计&#xff0c;对于系统出现的错误信息可以…

【 书生·浦语大模型实战营】作业(六):Lagent AgentLego 智能体应用搭建

【 书生浦语大模型实战营】作业&#xff08;六&#xff09;&#xff1a;Lagent & AgentLego 智能体应用搭建 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方…

Flutter创建自定义的软键盘

参考代码&#xff1a; Flutter - Create Custom Keyboard Examples 本文贴出的代码实现了一个输入十六进制数据的键盘&#xff1a; &#xff08;1&#xff09;支持长按退格键连续删除字符&#xff1b; &#xff08;2&#xff09;可通过退格键删除选中的文字&#xff1b; &…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

头歌:SparkSQL简单使用

第1关&#xff1a;SparkSQL初识 任务描述 本关任务&#xff1a;编写一个sparksql基础程序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1. 什么是SparkSQL 2. 什么是SparkSession。 什么是SparkSQL Spark SQL是用来操作结构化和半结构化数据的接口。…

UnityWebGL使用sherpa-ncnn实时语音识别

k2-fsa/sherpa-ncnn&#xff1a;在没有互联网连接的情况下使用带有 ncnn 的下一代 Kaldi 进行实时语音识别。支持iOS、Android、Raspberry Pi、VisionFive2、LicheePi4A等。 (github.com) 如果是PC端可以直接使用ssssssilver大佬的 https://github.com/ssssssilver/sherpa-ncn…

汽车制造业安全事故频发,如何才能安全进行设计图纸文件外发?

汽车制造业产业链长&#xff0c;关联度高&#xff0c;汽车制造上游行业主要为钢铁、化工等行业&#xff0c;下游主要为个人消 费、基建、客运和军事等。在汽车制造的整个生命周期中&#xff0c;企业与上下游供应商、合作商之间有频繁、密切的数据交换&#xff0c;企业需要将设计…

在编程的世界里,我相信每一行代码都是一次对未来的投资

&#x1f600;前言 突然有感而发也是激励自己互勉 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 在编程的世界里&#xff0c;我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里&#xff0c;我相信每一行代码都是一…

功能测试_分类_用例_方法

总结 测试分类 按阶段分类 是否查看源代码分类 是否运行分类 是否自动化 其他分类 软件质量模型 开发模型-瀑布模型 测试过程模型 v w 测试用例八大要素 用例编号 用例标题 …

【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、简单介绍Sizeof和Strlen1.1 Sizeof1.2 Strlen函数1.3 Sie…