CSV数据文件导入

CSV(Comma-Separated Value)是一种最为常见的数据库间通用数据交换格式标准之一,以逗号作为字段分隔符,空行作为记录分隔符,并以纯文本形式存储的表格数据文件。CSV 格式定义在 RFC 4180 文档中进行了详细描述。

用户可以使用 SequoiaDB 巨杉数据库提供的 sdbimprt 工具将以下数据导入 SequoiaDB 的集合中:

  • 从其他数据库导出的 CSV 数据
  • sdbexprt 工具 导出的 CSV 数据
  • 用户程序生成的 CSV 数据

本文档将通过实例介绍如何使用 sdbimprt 工具将 CSV 格式的数据快速导入 SequoiaDB 的集合中。

Note

在导入数据前,用户需要确保 CSV 文件编码格式为 UTF-8

数据准备

  • 以下是首行为字段定义的 CSV 数据文件 data1.csv 中的三条用户信息数据:
  1. id,name,age,identity,phone_number,email,country
  2. 1,"Jack",18,"student","18921222226","jack@example.com","China"
  3. 2,"Mike",20,"student","18923244255","mike@example.com","USA"
  4. 3,"Woody",25,"worker","18945253245","woody@example.com","China"
  • 以下是 CSV 数据文件 data2.csv 中的三条用户信息数据:
  1. 1,"Jack",18,"student","18921222226","jack@example.com","China"
  2. 2,"Mike",20,"student","18923244255","mike@example.com","USA"
  3. 3,"Woody",25,"worker","18945253245","woody@example.com","China"
  • 以下是以“|”作为字段分隔符的 CSV 数据文件 data3.csv 中的三条用户信息数据:
  1. 1|"Jack"|18|"student"|"18921222226"|"jack@example.com"|"China"
  2. 2|"Mike"|20|"student"|"18923244255"|"mike@example.com"|"USA"
  3. 3|"Woody"|25|"worker"|"18945253245"|"woody@example.com"|"China"

数据导入

情景一:以数据文件首行作为字段定义

假设本地 SequoiaDB 已存在集合空间 info 的集合 user_info,该集合用于记录用户的信息。现将上述示例 CSV 数据文件 data1.csv 中的用户信息数据导入集合空间 info 的集合 user_info 中:

  1. sdbimprt --hosts "localhost:11810" --type csv --csname info --clname user_info --headerline true --file data1.csv

Note:

  • 数据文件的数据量较大时,可使用 -n 指定每次导入的记录数以及 -j 指定导入连接数来提供导入效率
  • --file 参数支持指定多个文件或者目录,使用逗号“,”分隔,重复出现的文件会被忽略
  • 更多参数说明详见 sdbimprt 工具介绍

情景二:命令行指定字段定义

假设本地 SequoiaDB 已存在集合空间 info 的集合 user_info,该集合用于记录用户的信息。现将上述示例 CSV 数据文件 data2.csv 中的用户信息数据导入集合空间 info 的集合 user_info 中:

  1. sdbimprt --hosts "localhost:11810" --type csv --csname info --clname user_info --fields 'id long, name string default "Anonymous", age int, identity, phone_number, email, country' --file data2.csv

Note:

  • fields语法:fieldName [type [default <value>], ...]
  • 更多 CSV 格式说明详见 CSV 数据类型

情景三:自定义字段分隔符

假设本地 SequoiaDB 已存在集合空间 info 的集合 user_info,该集合用于记录用户的信息。现将上述示例 CSV 数据文件 data3.csv 中的用户信息数据导入集合空间 info 的集合 user_info 中:

  1. sdbimprt --hosts "localhost:11810" --type csv --csname info --clname user_info --fields 'id long, name string default "Anonymous", age int, identity, phone_number, email, country' --delfield '|' --file data3.csv

Note:

sdbimprt 工具还支持使用 --delchar 参数自定义字符串分隔符和 --delrecord 参数自定义记录分隔符

情景四:字段的值存在换行符

假设本地 SequoiaDB 已存在集合空间 info 的集合 user_info,该集合用于记录用户的信息。现将上述示例 CSV 数据文件 data4.csv 中的用户信息数据导入集合空间 info 的集合 user_info 中:

  1. sdbimprt --hosts "localhost:11810" --type csv --csname info --clname user_info --fields 'id long, name string default "Anonymous", age int, identity, phone_number, email, country, address' --linepriority false --file data4.csv

Note:

  • --linepriority 参数的作用是设置分隔符的优先级,默认值为true
  • 值为 true 时,分隔符的优先级为:记录分隔符,字符串分隔符,字段分隔符
  • 值为 false 时,分隔符的优先级为:字符串分隔符,记录分隔符,字段分隔符

小结

SequoiaDB 的 sdbimprt 工具支持并发导入单一的 CSV 数据文件或批量导入 CSV 数据文件目录。用户使用该工具能简单快速地将 CSV 数据导入 SequoiaDB 。