CSV,comma-separated values 逗号分隔值,通常被用于在使用纯文本的系统之间,交换表格类型的数据。

CSV是一种基于行的文件格式。也就是说,此类文件中的每一行都对应到数据表中的具体某一行。通常,CSV文件里包含有一个标题行,该标题行提供了数据的列名。如果没有标题行的话,该文件将被视为已部分完成了结构化工作。

单个CSV文件往往无法显示层次化的结构、或数据关系。而具体的数据连接关系往往需要通常多个CSV文件进行组织。各种外键(Foreign key)一般被存储在一个或多个文件的多个列中。不过这些文件之间的链接并非由其格式本身来表示。此外,由于并未完全标准化,因此在CSV格式文件中,您可以使用逗号以外的界定符,例如:制表符(tabs)或空格。

**CSV文件的另一个特性是:**只有处于未压缩的原始文件状态、或是运用诸如bzip2lzo之类的解压缩工具时,CSV文件才能够被拆分(注意:lzo需要进行索引之后,方可执行拆分)。

优点:

  • CSV易于人工阅读,也易于手动编辑。

  • CSV提供了一种简单明了的信息模式(schema)。

  • 几乎所有现有的应用程序都能够处理CSV文件。

  • CSV文件比较易于实现和解析。

  • 对于XML而言,您需要在每一行的每一列中分别添加开始与结束标签;而CSV比较简约,您只需一次性写入列标题即可。

缺点:

  • 由于处置的是平面数据,因此需要事先对复杂的数据结构进行格式上的转换。
  • 由于不支持列的类型,因此在文本列和数字列之间并无区别。
  • 并无表示二进制数据的标准方法。
  • 由于NULL和引号之间并无区别,因此导入CSV时可能会出现问题。
  • 对于特殊字符的支持性较差。
  • 缺乏通用的标准。

尽管存在着一定的局限性,但CSV文件仍然是数据共享领域的上乘之选。它经常被广泛地用于各类业务应用、消费者行业、以及科学分析程序中。当前,大多数批处理和流数据处理模块(如Spark和Hadoop),都能够支持CSV文件的序列化与反序列化。它们在读取时提供了添加schema的方法。

导入功能优选CSV格式的理由:

  1. 标准开放,即行业内标准,且支持市面上主流软件的各种操作、解析等;

  2. 性能效率远胜于其他格式,消耗内存更小;

  3. 支持流式处理,解析简单,消耗性能最小;

  4. 读写效率最快。

导出功能优选CSV格式的理由:

  1. 文件结构简单,与txt文本格式相差无几,且功能比txt文本强大;

  2. 存储方式简单,减少存储数据的容量;

  3. 支持流式处理,写入速度最快,占用内存极低,生成效率更高;

  4. 服务器、浏览器等各终端处理起来非常迅速;

  5. 轻松处理几百万行数据,理论上是不限量;

  6. 支持Excel等格式互相转换;

PS: Excel格式处理上限65536行,不支持流失处理,性能消耗大,内存占用较大,很容易导致内存溢出等情况