程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL數據庫CSV存儲引擎的使用

MySQL數據庫CSV存儲引擎的使用

編輯:關於MYSQL數據庫

MySQL有很多存儲引擎,這裡並不過多介紹,今天主要是簡單說說CSV存儲引擎,個人認為CSV是MYSQL中相對比較簡單而且方便的存儲引擎了,說它簡單是因為其創建和使用簡單,說它方便,是因為它的數據存儲文件格式就是通用的CSV文件格式,這種格式很普遍,很多軟件都支持,當然應用的面也比較窄,主要用於方便輸出數據為通用的CSV報表格式的時候,通常情況下還是用的比較少。 1.MySQL對CSV存儲引擎的支持。
不是所有的MySQL版本都支持CSV存儲引擎,只有在MySQL 5.0及以上版本才支持,而且Windows下的版本在5.1版本才知道。
如果當前版本不支持CSV存儲引擎,而在創建使用CSV存儲引擎的表時,會提示如下錯誤:
MySQL> create table csv_test(id bigint not null,name varchar(100) not null)engine=csv
    -> ;
ERROR 1289 (HY000): The 'CSV' feature is disabled; you need MySQL built with 'CSV' to have it working.
這是本人在windows 5.0.22版本下測試時遇到的錯誤信息。換個Windows下的5.1以上的版本就OK了。
另外,也可以通過show engines命令來檢查該版本是否支持CSV存儲引擎,也可以查看其支持哪些存儲引擎,如下:
1)Windows 下 MySQL 5.0.22版本的show engines命令執行情況:
mysql> show engines; | Engine     | Support | Comment                                                        | | MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      |
| InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys     |
| BerkeleyDB | NO      | Supports transactions and page-level locking                   |
| BLACKHOLE | NO      | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE    | NO      | Example storage engine                                         |
| ARCHIVE    | YES     | Archive storage engine                                         |
| CSV        | NO      | CSV storage engine                                             |
| ndbcluster | NO      | Clustered, fault-tolerant, memory-based tables                 |
| FEDERATED | NO      | Federated MySQL storage engine                                 |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          |
| ISAM       | NO      | Obsolete storage engine                                        | 12 rows in set (0.00 sec)
測試結果發現,該版本並不支持CSV存儲引擎,而且,總共支持MyISAM,MEMORY,InnoDB,ARCHIVE,MRG_MYISAM這5種存儲引擎。
2)Windows 下 MySQL 5.4.3版本的show engines命令執行情況:
mysql> show engines; | Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints | | MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
| CSV        | YES     | CSV 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         |
| FEDERATED | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES | YES        |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         | 8 rows in set (0.02 sec)
發現這個版本就支持CSV,而且支持MyISAM,CSV,MRG_MYISAM,BLACKHOLE,InnoDB,ARCHIVE,MEMORY這7種存儲引擎。

2.CSV存儲引擎的使用
1)先建一測試表,用CSV存儲引擎,如下:
MySQL> create table csv_table(id bigint not null,name varchar(100) not null)engine=csv;
Query OK, 0 rows affected (0.11 sec)
2)觀察生成的表相關文件:
發現生成了3個文件,如下:
csv_table.frm csv_table.csv csv_table.csm
csv_table.frm 這個文件很清楚,保存表的元數據信息,任何一個MySQL存儲引擎都有這個表文件。
csv_table.csv 這個是數據文件,保存表中的數據,用CSV格式保存。
csv_table.csm 這個文件究竟用途如何,還不太清楚,研究中。。。
3)向表中插入2條數據,代碼如下:
MySQL> insert into csv_table values(1,'aa');
Query OK, 1 row affected (0.05 sec)

MySQL> insert into csv_table values(2,'bb');
Query OK, 1 row affected (0.00 sec)
4)打開csv_table.csv,觀察其數據:
1,"aa"
2,"bb"
大家都知道,該文件可以直接用Excel打開。
3. 修改數據文件csv_table.csv
使用CSV存儲引擎的一個重要好處是,可以直接通過修改文件,向數據庫中添加更新數據。現在打開csv_table.csv文件,修改內容為如下:
1,"aa"
2,"bb"
3,"cc"
4,"dd"
點保存,卻發現無法保存,系統提示“另一程序正在使用此文件,進程無法訪問”,這個程序就是MYSQL,MYSQL在運行期間,鎖定了該文件, 因此必須停止了MySQL才能修改。
於是停止MySQL服務,然後編輯後保存,OK。
重新啟動MySQL服務,
通過select語句查看該表數據,如下:
MySQL> select * from csv_table; | id | name | | 1 | aa   |
| 2 | bb   |
| 3 | cc   |
| 4 | dd   | 4 rows in set (0.00 sec)
OK,數據已經更新,非常方便。

4.CSV存儲引擎的缺點
CSV存儲引擎實際上操作維護的是一個標准的CSV文件,因此不支持索引等功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved