MySQL数据库CSV存储引擎的使用(转)

来源:互联网 发布:电脑摄像头监视器软件 编辑:程序博客网 时间:2024/05/24 16:16

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文件,因此不支持索引等功能。

本文来自CSDN博客

0 0
原创粉丝点击