mysql - 什么时候为 MySQL 使用 CSV 存储引擎?

标签 mysql csv storage-engines

来自docs ,它指出:

The CSV storage engine stores data in text files using comma-separated values format.

这样做有什么好处?以下是我能想到的一些:

  1. 您可以使用简单的文本编辑器编辑 CSV 文件(但是,您可以使用 SELECT INTO OUTFILE 轻松导出数据)
  2. 可以很容易地导入到电子表格程序中
  3. 轻量级且性能可能更好(大胆猜测)

有哪些缺点?

  1. 没有索引
  2. 不可分割
  3. 无交易
  4. 不能有 NULL 值

考虑到这个(非详尽的)优点和缺点列表,在哪些实际场景中我应该考虑使用 CSV 存储引擎而不是其他引擎?

最佳答案

我很少使用 CSV 存储引擎。不过,我发现它很有用的一个场景是批量数据导入。

  1. 创建一个表,其中的列与我输入的 CSV 文件相匹配。
  2. 在 mysql 之外,只需使用 shell 提示符,mv 将 CSV 文件放入 MySQL 数据字典,覆盖属于我刚创建的表的 .csv 文件。
  3. ALTER TABLE mytable ENGINE=InnoDB

瞧!使用 DDL 而非 INSERT 或 LOAD DATA 一步导入巨大的 CSV 数据文件。

诚然,它不如 INSERT 或 LOAD DATA 灵活,因为您不能对单个列执行 NULL 或自定义覆盖,也不能使用任何“替换”或“忽略”功能来处理重复值。但是,如果您有一个输入文件正是您要导入的文件,则可以使导入变得非常容易。

关于mysql - 什么时候为 MySQL 使用 CSV 存储引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491823/

相关文章:

mysql - SQL 错误 (1242) : Subquery returns more than 1 row

php - Symfony:违反完整性约束:500 内部服务器错误

excel - 告诉 Excel VBA TextToColumns 不要按空格分隔

c# - 如何编码 CSV 文件导入?

javascript - 如何获取 javascript split 函数以从定界字符串中提取空值

mysql - Laravel Schema Builder 改变存储引擎

MySQL外键数据类型错误

mysql group_concat 未知列错误

MySQL:有人用过 TokuDB 存储引擎吗?