使用mysql数据库读写CSV文件

来源:互联网 发布:将表格相同数据求和 编辑:程序博客网 时间:2024/06/02 07:00

CSV文件是一种标准的文本文件,可以用Excel或者记事本等软件打开,Mysql本身也支持这种形式的文件读取。问题是现在有CSV文件,如何像操作数据库文件一样操作CSV文件,对其中的内容进行增删查改等操作?

Mysql Manual 5.7中的15.4节对CSV存储引擎进行了描述。

使用CSV引擎创建表格如下:

CREATE TABLE test (i INT NOT NULL, c CHAR(10) NOT NULL) ENGINE = CSV;

除了test.CSV文件本身,Mysql还在数据目录下创建了.FRM文件和.CSM文件,两者都为二进制不可读文件,其中.FRM文件存储了表格本身的格式信息,例如有多少列,列的名称,数据类型等,.CSM文件存储了表格的状态和表格记录行数。

CSV引擎不支持索引和分区,并且所有字段有必须是非空值。读取自己的CSV文件有两种办法,一种是直接用有数据的CSV文件替代数据库创建表格时生成的CSV文件,另一种是建立软链接,将数据库的CSV文件做成软链接,链接到有数据的CSV文件。这里介绍第二种,两种方法的CSV文件都必须满足以下要求:

1.CSV文件的末位必须要有换行符号(ASCII码‘0A’),否则最后一条数据不识别

2.CSV文件的内容要和创建表格时定义的格式一致,比如列的数目,列的数据类型等

假设有如下的CSV文件:

1,2

3,4

5,6


文件名称为data.csv,存放在/home目录,建立软链接的脚本如下:


sudo chmod a+rwx /home/$1sudo ln -sf /home/$1 /home/db_data/mysql/data/testdatabase/$2sudo chmod a+rwx /home/db_data/mysql/data/testdatabase/$2mysql -h127.0.0.1 -uroot -proot <<EOF!FLUSH TABLES;EOF!


调用方式如下:

./updateDataBase.sh test.CSV data.csv

特别注意的是在修改了数据之后需要刷新缓存。


0 0
原创粉丝点击