mysql csv 引擎不能所表问题的解决_MySQL存储引擎之CSV

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

文件系统存储特点

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

.CSV文件存储表内容

.CSM文件存储表的元数据如表状态和数据量

.frm文件存储表结构信息

CSV特点

以CSV格式进行数据存储(逗号隔开,引号)

所有的列必须都是不能为NULL的

不支持索引(不适合大表,不适合在线处理)

可以对数据文件直接编辑(保存文本文件内容)

实例:

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

MySQL [test]> 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 [test]> 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 [test]> 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 [test]> select * from mycsv;

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

| id | c1 | c2 |

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

| 1 | aaa | bbb |

| 2 | ccc | ddd |

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

2 rows in set (0.01 sec)

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

[root@wangerxiao ~]# cd /usr/local/mysql/var/test

[root@wangerxiao test]# ls -lh mycsv*

-rw-r----- 1 mysql mysql 35 Mar 17 10:36 mycsv.CSM

-rw-r----- 1 mysql mysql 28 Mar 17 10:36 mycsv.CSV

-rw-r----- 1 mysql mysql 8.5K Mar 17 10:35 mycsv.frm

查看CSV文件

[root@wangerxiao test]# cat mycsv.CSV

1,"aaa","bbb"

2,"ccc","ddd"

我们发现就是文本文件

我们对文本文件进行编辑

1 1,"aaa","bbb"

2 2,"ccc","ddd"

3 3,"eee","fff"

然后在数据库中查看表

首先我们刷新数据表

MySQL [test]> flush tables;

Query OK, 0 rows affected (0.05 sec)

查看数据表

MySQL [test]> select * from mycsv;

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

| id | c1 | c2 |

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

| 1 | aaa | bbb |

| 2 | ccc | ddd |

| 3 | eee | fff |

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

3 rows in set (0.00 sec)

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

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

MySQL [test]> create index idx_id on mycsv(id);

ERROR 1069 (42000): Too many keys specified; max 0 keys allowed

证明不支持索引

适用场景

适合做为数据交换的中间表(能够在服务器运行的时候,拷贝和拷出文件,可以将电子表格存储为CSV文件再拷贝到MySQL数据目录下,就能够在数据库中打开和使用。同样,如果将数据写入到CSV文件数据表中,其它web程序也可以迅速读取到数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值