• 欢迎访问DBA的辛酸事儿,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 欢迎大家关注博主公众号:DBA的辛酸事儿
  • 博文中若有错误的地方,请大家指正,大家的指正是我前进的动力

MySQL之CSV存储引擎

MySQL SEian.G 3年前 (2021-11-29) 1303次浏览 已收录 0个评论
文章目录[隐藏]

今天来分享一下MySQL中支持的一种存储引擎–CSV,这种存储引擎平时工作中用得可能并不多,但是在某一些导入CSV文件的场景下,非常有用;下面我们就来具体介绍下该存储引擎的使用;

平时我们把CSV文件导入到MySQL中,可能会考虑到使用load data的方式导入数据,下面我们介绍一种新的方式–使用CSV引擎,在数据量比较大的情况下,非常的好用;

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

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

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

我们指定各列不为空

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)

向表中插入数据

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)

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

-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文件

# cat mycsv.CSV
1,"aaa","bbb"
2,"ccc","ddd"

我们发现就是文本文件
我们对文本文件进行编辑

1,"aaa","bbb"
2,"ccc","ddd"
3,"222","ddd"
4,"111","ddd"

然后在数据库中查看表

首先刷新数据表

mysql> flush tables;
Query OK, 0 rows affected (0.05 sec)

查看数据表

mysql> select * from  mycsv;
+----+-----+-----+
| id | c1  | c2  |
+----+-----+-----+
|  1 | aaa | bbb |
|  2 | ccc | ddd |
|  3 | eee | fff |
+----+-----+-----+
3 rows in set (0.00 sec)

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

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

mysql> create index idx_id on mycsv(id);
ERROR 1069 (42000): Too many keys specified; max 0 keys allowed

证明不支持索引

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

MySQL之CSV存储引擎


如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。
转载请注明原文链接:MySQL之CSV存储引擎
喜欢 (2)
SEian.G
关于作者:
用心去记录工作,用心去感受生活,用心去学着成长;座右铭:苦练七十二变,笑对八十一难
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址