MySQL常用存储引擎之CSV
生活随笔
收集整理的這篇文章主要介紹了
MySQL常用存储引擎之CSV
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先我們來看CSV這種存儲引擎,CSV存儲引擎呢,可以講CSV文件,作為MYSQL的表來處理,這種存儲引擎的存儲格式呢,就是普通的CSV文件,CSV存儲引擎的數據存儲方式非常的有特點,如果我們把數據存儲在MYISAM和Innodb表中的話,其數據文件我們是不能夠直接查看的,因為這兩種數據文件的存儲呢,都是以二進制文件方式來存儲的,而CSV存儲引擎呢,則不同,CSV存儲引擎是以文件方式來進行存儲的,也就是說,我們可以通過查看文件的命令,比如more,或者是vim工具,直接查看或者編輯CSV存儲引擎中的表,只要符合CSV文件的格式,我們就不要擔心損壞數據,當我們在MYSQL中建立一張CSV存儲引擎的表時呢,我們應該可以看到,三個系統文件中的文件,這三個文件都是以表名為文件名,但是分別會以CSVCSM和FRM為后綴,其中呢CSV文件呢,就是CSV存儲引擎的文件,剛才說了,這個文件的存儲呢,是以文本格式來進行存儲的,另一個CSM文件呢,這個是存儲引擎從存儲的元數據存儲的文件,其中主要是包括了表的狀態,和數據行和數量的信息,最后就是frm文件了,這個文件前面也已經多次介紹過,是MYSQL服務器層,存儲元數據所需要的文件,會存在所有的存儲引擎中,下面我們再來看一下CSV存儲引擎有哪些特點,然后在一起給大家演示一下,如何遍歷CSV存儲引擎的表
CSV存儲引擎有哪些特點呢,前面說到了,CSV存儲引擎,其最大的特點就是將CSV文件,作為MYSQL的表來處理,這種存儲引擎的存儲格式呢,就是普通的CSV格式,大家對CSV的格式已經比較熟悉了,CSV文件中的每一列呢,都是以逗號來分割的,并且對于文本數據的類型來說呢,以雙引號來引起來的,如咱們右邊圖的內容呢,就是很典型的CSV的格式了,CSV存儲的第二個特點呢,是建立表時呢,所有列的定義都必須是非空的,也就是說,CSV存儲引擎的表是不允許出現可為空的列的,可以在下面的演示中進行驗證,和MYISAM和Innodb存儲引擎的不同,CSV存儲引擎呢,不支持索引的,大家知道,索引的主要作用呢,可以優化查詢的效率,如果一個表不支持索引,那么每次查詢時呢,進行全表掃描,那么對于一個大表來說呢,顯然這個查詢效率會比較低,所以這一點來看,CSV存儲引擎呢,并不適用于OLTP環境中的使用,也就是在線處理,像我們的web環境是不適合使用CSV存儲引擎的,最后呢,CSV存儲引擎是支持對文件進行編輯的,這和其他大多數數據存儲引擎是不同的,其他存儲引擎的文件呢,是以二進制文件進行存儲的,而CSV存儲引擎的文件呢,都是保持文本文件的內容,說了這么多,可能大家并不能很好的理解,CSV存儲引擎的特點,所以我們需要在MYSQL環境中給大家來演示一下,CSV存儲引擎的使用
試一下CSV存儲引擎的使用,首先我們在test庫中呢,建立一張CSV引擎的表,同樣這張表就命名為CSV,首先第一列是id,c1列,varchar(10),和c2列,它是char(10)的列,同時我們指定存儲引擎是CSV,大家可以看一下,如果細心一定會發現,我們這三個列都是可以允許為空的,那么我們看一下在這種情況下呢,會出現什么問題,大家看到這里爆出一個1178的錯誤,這個存儲引擎不支持為空的列的,也就是之前給大家介紹的CSV存儲引擎特點的時候,特別指出的
CSV存儲引擎是不支持為空的列的,大家可以在這里看到,那么下面我們對這個表定義進行一個修改,使他進行not null約束,再進行定義,看會怎么樣,每一列中都不能為空,再次進行SQL我們就發現,成功建立了mycsv表create table mycsv(id int not null,c1 varchar(10) not null, c2 char(10) not null) engine=csv;
現在我們可以隨意的往表中插入一些數據,我們隨便插入幾列吧,假如我們先插入這兩列insert into mycsv values(1,'aaa','bbb'),(2,'ccc','ddd');
分別是id為1和2的兩列
首先我們到test庫下ls -lh mycsv*他區分大小寫,我們看到三個文件系統的文件,分別是mycsv.CSM文件,和mycsv.CSV文件,frm文件,這三個文件就是我們之前學習存儲引擎存儲特點時呢,就給大家提供了三個文件
大家可以來看一看,首先csv文件就是所說的數據文件,csm就是使用元數據存儲的一些文件,frm是MYSQL系統的一些約束文件,那么下面繼續我們的測試,我們來看看mycsv文件的內容,我們說過,我們是以文本文件的格式來存儲的more mycsv.CSV大家看到了,其實其中存儲的格式呢就是,文本文件,他存儲的內容呢,在表中插入的內容是完全一樣的
他的數據存儲文件是可以進行編輯的,對他進行一些編輯,加上'eee','fff',我們按照上面的方法來寫,這一點大家要注意,要用雙引號,而不用單引號
我們在以命令行格式下呢,加了一列,id為3的列,我們看看我們在MYSQL下是否可以看到,首先我們要把表進行刷新操作,才能重新讀取一張表,大家可以看到,同樣在我們的MYSQL系統下呢,同樣看到了我們文件命令行中插入的第三個列,他可以對我們存儲的文件進行編輯,前面才說過CSV存儲引擎是不支持索引的,那我們在CSV建立索引會有怎樣的影響呢
我們來試一下,我們在id列上建立一個索引,看看他會給我們什么樣的提示,這個提示是沒有問題的,語句有些問題,大家看到,被提示,有太多的關鍵字未指定,0個關鍵字,也就是不支持索引了create index idx_id on mycsv(id);
只允許0個關鍵字,0個關鍵字也就是不支持索引了,以上我們就會CSV引起進行一個完整的演示,包括他的一些特性,那么下面我們再來看一看,他的適用場景,根據我們之前的介紹和演示呢,我們可以知道,CSV存儲引起可以在拷貝,拷出文件的數據文件,可以將excel數據表格,文件中的數據呢存儲為CSV文件,然后復制到MYSQL數據目錄下,就能夠在MYSQL進行打開和使用,同樣如果將數據寫入到CSV文件的表中呢
同樣如果將數據寫入到CSV引擎的表中呢,其他的web程序呢,也能夠立即的從表中,讀取到CSV表中的數據,因此CSV存儲引擎,可以作為一個數據交換中間表,來進行使用,這一點是非常有用的
?
總結
以上是生活随笔為你收集整理的MySQL常用存储引擎之CSV的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Innodb存储引擎的特性(2)
- 下一篇: MySQL常用存储引擎之Archive