Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL之CSV存储引擎的应用

MySQL之CSV存储引擎的应用

作者头像
SEian.G
发布于 2021-12-01 08:45:00
发布于 2021-12-01 08:45:00
1.3K00
代码可运行
举报
文章被收录于专栏:SEian.G学习记录SEian.G学习记录
运行总次数:0
代码可运行

今天来分享一下MySQL中支持的一种存储引擎--CSV,这种存储引擎平时工作中用得可能并不多,但是在某一些导入CSV文件的场景下,非常有用;平时我们把CSV文件导入到MySQL中,可能会考虑到使用load data的方式导入数据,下面我们介绍一种新的方式–使用CSV引擎,在CSV数据量比较大的情况下,比较好用;

CVS引擎MySQL默认就是支持的,可以通过如下的方式进行查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql>show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                             | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| ROCKSDB            | YES     | RocksDB storage engine                                                     | YES          | YES  | YES        |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

MySQL CSV存储引擎可以将csv文件作为mysql的表进行处理。存储格式就是普通的csv文件。

文件系统存储特点

数据以文本方式存储在文件中(Innodb则是二进制)

.CSV文件存储表内容 .CSM文件存储表的元数据如表状态和数据量 .frm文件存储表结构信息

如果是8.0版本,没有.frm文件,而是.sdi文件

CSV引擎限制

  • 以CSV格式进行数据存储(逗号隔开,引号)
  • 所有的列必须都是不能为NULL的
  • 不支持索引(不适合大表,不适合在线处理)
  • CSV存储引擎不支持分区。
  • 可以对数据文件直接编辑(保存文本文件内容)

测试案例

我们新建一个csv文件,但是不指定not null

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table  mycsv(id  int,c1 varchar(10),c2 char(20)) engine=csv; 
ERROR 1178 (42000): The storage engine for the table doesn't support nullable columns

我们指定各列不为空

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create table  mycsv(id  int not null ,c1 varchar(10) not null,c2 char(20) not null) engine=csv;
Query OK, 0 rows affected (0.02 sec)

向表中插入数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> insert into mycsv values ( 1,'aaa','bbb'),(2,'ccc','ddd') ;
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> select * from  mycsv;
+----+-----+-----+
| id | c1  | c2  |
+----+-----+-----+
|  1 | aaa | bbb |
|  2 | ccc | ddd |
+----+-----+-----+
2 rows in set (0.01 sec)

我们查看文件系统下的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-rw-r----- 1 mysql mysql       3110 Nov 19 16:56 mycsv_750.sdi
-rw-r----- 1 mysql mysql         35 Nov 19 16:56 mycsv.CSM
-rw-r----- 1 mysql mysql         28 Nov 19 16:56 mycsv.CSV

查看CSV文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cat mycsv.CSV
1,"aaa","bbb"
2,"ccc","ddd"

我们发现就是文本文件

我们对文本文件进行编辑

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1,"aaa","bbb"
2,"ccc","ddd"
3,"222","ddd"
4,"111","ddd"

然后在数据库中查看表

首先刷新数据表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> flush tables;
Query OK, 0 rows affected (0.05 sec)

查看数据表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from  mycsv;
+----+-----+-----+
| id | c1  | c2  |
+----+-----+-----+
|  1 | aaa | bbb |
|  2 | ccc | ddd |
|  3 | eee | fff |
+----+-----+-----+
3 rows in set (0.00 sec)

我们发现在文件中修改的数据已经添加到了数据库

我们看看如果增加索引会发生什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> create index idx_id on mycsv(id);
ERROR 1069 (42000): Too many keys specified; max 0 keys allowed

证明不支持索引

好了,今天就先介绍这些;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA的辛酸事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
除Innodb和MyISAM外MySQL还有哪些存储引擎
CSV存储引擎可以将CSV文件作为mysql表来处理,存储格式就是普通的CSV文件。如果把数据存储在myisam和Innodb中,存储数据的文件是不能直接查看的,因为这两种存储引擎都是以二进制文件存储的。而CSV是以文本方式存储的,CSV是不支持索引的,查找的时候要进行全表扫描。
端碗吹水
2020/09/23
6370
除Innodb和MyISAM外MySQL还有哪些存储引擎
MySQL常见存储引擎详解
在my.cnf配置文件中设置default-storage-engine参数表示设置默认存储引擎 在MySQL的连接上设置当前连接的默认存储引擎
星哥玩云
2022/08/17
4930
MySQL常见存储引擎详解
第05章_存储引擎
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
1690
第05章_存储引擎
MySQL索引重建?如何操作?
两周没有更新文章了,最近一直在忙”人生大事”,毕竟人这一生,除了工作、上班还有其他几件重要的事情,而且也是每个人都必须要经历的,走完了,也就走完了……
SEian.G
2021/11/15
4.4K0
RocksDB和Innodb引擎性能PK胜负难料?
迫于线上环境存储空间的问题,最近针对Rocksdb引擎做了一些预研测试,本文主要对比MyRocks引擎和Innodb引擎以及压缩模式下的Innodb引擎的在性能方面的一些差异对比,分别从读写,只读,只写等场景下压测的结果对比;关于rocksdb引擎的介绍,本文不做详细介绍;废话不多说了,我们先看一下如何来安装rocksdb引擎;
SEian.G
2021/04/15
4.5K0
RocksDB和Innodb引擎性能PK胜负难料?
关于MySQL数据库InnoDB与MyIASM存储引擎
如果想要修改MySQL数据库的存储引擎,那么必须要了解这两种引擎,并且清楚的明白这两种引擎的区别。
星哥玩云
2022/08/18
9870
MySQL进阶笔记-2(存储引擎)
最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
千羽
2021/01/14
5150
MySQL进阶笔记-2(存储引擎)
技术分享 | mysql Federated 引擎最佳实战
MySQL OCP 认证,PostgresSQL PGCA 认证,擅长 MySQL、PostgreSQL、dble 等开源数据库相关产品的备份恢复、读写分离、SQL 调优、监控运维、高可用架构设计等。目前任职于月亮小屋(中国)有限公司。
爱可生开源社区
2021/06/16
1.8K0
技术分享 | mysql Federated 引擎最佳实战
Mysql数据库-存储引擎
和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。
Devops海洋的渔夫
2022/01/17
5.2K0
Mysql数据库-存储引擎
MySQL-体系结构以及常用存储引擎MyISAM和InnoDB初探
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
小小工匠
2021/08/17
3330
Mysql更换MyISAM存储引擎为Innodb的操作记录
一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件。 通过下面的命令结果可知,已经安装了innodb插件。 mysql> show plugins; +------------+--------+----------------+---------+---------+ | Name | Status | Type | Library | License | +------------+--------+-----
洗尽了浮华
2018/01/23
2.4K0
搞定PHP面试 - MySQL基础知识点整理 - 存储引擎
可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎:
猿哥
2019/07/01
5390
怎么优雅的选择 MySQL 存储引擎
对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有很多种,那么 MySQL 中分别又有那些,怎么优雅的使用呢?
Meng小羽
2020/05/07
7910
开发经验|小白该如何学习MySQL存储引擎
MySQL中的存储引擎的发展历史可谓是丰富多彩,至今为止,MySQL已经有超过20年的历史,其存储引擎不断进行着演化和发展。
六月暴雪飞梨花
2023/11/15
6422
开发经验|小白该如何学习MySQL存储引擎
步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
转载自 https://www.cnblogs.com/annsshadow/p/5037667.html
allsmallpig
2021/02/25
6650
Mysql存储引擎
MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应的引擎。MySQL支持的存储引擎有很多,常用的是:InnoDB,MyISAM。MEMORY,MERGE作为了解,其中InnoDB提供事务安全,其他存储引擎是非事务安全表。
chao超的搬运文章
2023/10/15
2860
Mysql存储引擎
InnoDB存储引擎文件
与InnoDb存储引擎密切相关的文件包括重做日志文件和表空间文件,首先来说说我对表空间文件的理解。表空间文件是用来存储表信息和表数据的,它默认的大小是10MB,名称为ibdata1,如下面代码的第10行所示(代码可以左滑):
AsiaYe
2019/11/06
9210
InnoDB存储引擎文件
MySQL 存储引擎 原
使用MEMORY存储引擎的表,其数据存储在内存中,且行的长度固定,这两个特点使得MEMORY存储引擎非常快。
wuweixiang
2018/08/14
1.1K0
MySQL 存储引擎
                                                                            原
MySQL字段自增长AUTO_INCREMENT用法实例详解
之前有碰到过开发同事指出一张InnoDB表的自增列 AUTO_INCREMENT 值莫明的变大,由于这张表是通过MySQLdump导出导入的。
星哥玩云
2022/08/17
5.4K0
从 InnoDB 到 Memory:MySQL 存储引擎的多样性
🔥事务存储引擎是数据库管理系统中负责数据存储、检索和事务处理的组件。它们支持事务的四个基本特性,通常被称为 ACID 属性:
IsLand1314
2024/10/15
2210
相关推荐
除Innodb和MyISAM外MySQL还有哪些存储引擎
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验