MySQL 服务器上的 CSV 引擎

MySQL 服务器上的 CSV 引擎

我不认为这是一个编程问题所以我要在这里问 -

在阅读《高性能mysql》一书时,我读到了有关CSV引擎的内容。其中一段写道:

CSV 引擎可以将逗号分隔值 (CSV) 文件视为表,但不支持对它们进行索引。此引擎允许您在服务器运行时将文件复制到数据库中或从数据库中复制文件。如果您从电子表格中导出 CSV 文件并将其保存在 MySQL 服务器的数据目录中,则服务器可以立即读取它。类似地,如果您将数据写入 CSV 表,外部程序可以立即读取它。CSV 表作为数据交换格式和某些类型的日志记录特别有用。

我从这段话中了解到,我可以将 .CSV 文件复制到数据库的数据目录中,它应该显示为一个可以读取的表。但是,每当我将测试 .csv 文件复制到目录中时,它都不会显示为表格。我无法访问它。

我也在使用 MySQL 5.5

有谁知道为什么这不起作用,或者我做错了什么?

答案1

我选择在我的 MySQL 服务器上尝试一下,看看问题出在哪里。看来您需要在 MySQL 中创建表(指定 engine=csv),以便表能够适当地添加到 MySQL,并跟踪表字段元数据。在我的测试中,如果不先使用“create table”,我就无法让 MySQL 了解 csv 文件。

例子:

  1. 创建名为 foo 的新 csv,在此示例中,列“i”表示整数,列“c”表示字符字段: CREATE TABLE foo (i int not null, c char(10) not null) engine=csv;
  2. foo.frm、foo.CSM、foo.CSV 在 /var/lib/mysql/data/dbname 中创建,您会注意到 foo.CSV 是零字节。
  3. 将现有的 csv(与表定义的格式匹配)复制到 foo.CSV 中:

    1,"FOOBAR"
    2,"FOOBAZ"
    3,"BARBAZ"
    
  4. 在 mysql 中,select * from foo 应该产生以下结果:

    mysql> select * from foo;
    +---+--------+
    | i | c      |
    +---+--------+
    | 1 | FOOBAR |
    | 2 | FOOBAZ |
    | 3 | BARBAZ |
    +---+--------+
    3 rows in set (0.00 sec)
    

相关内容