如何将包含对象字段的CSV文件数据导入Cassandra对应自定义类型
该操作完全可以实现,无需修改现有CSV结构,使用Cassandra原生的COPY命令支持直接映射CSV列到用户自定义类型(UDT)的对应属性
前置条件确认
首先确认你已经正确创建了自定义类型和目标表,参考示例语句:
-- 创建pet自定义类型 CREATE TYPE IF NOT EXISTS pet ( name text, age int ); -- 创建house目标表 CREATE TABLE IF NOT EXISTS house ( id int PRIMARY KEY, name text, pet frozen<pet> );
导入操作步骤
你的CSV现有结构无需调整,假设CSV内容如下:
id,name,pet.name,pet.age 1,田园别墅,旺财,3 2,高层公寓,橘猫,2
直接执行如下COPY命令即可完成导入:
COPY house (id, name, pet:name, pet:age) FROM '你的CSV文件绝对路径' WITH HEADER = TRUE;
命令说明:
- 导入列中使用
自定义类型名:属性名的格式,即可直接将CSV对应的列值写入UDT的对应属性 HEADER = TRUE表示CSV第一行为表头,会自动跳过第一行做数据映射
注意事项
- 导入前建议先添加
LIMIT 2参数测试前2行数据,确认格式匹配无误后再全量导入,示例:COPY house (id, name, pet:name, pet:age) FROM '你的CSV文件绝对路径' WITH HEADER = TRUE AND LIMIT 2; - 需保证CSV中各列的数值类型和UDT、表定义的字段类型完全匹配,例如pet.age为int类型时,CSV对应列不能出现非数字字符
- 若存在嵌套UDT场景,可通过
一级UDT名:二级UDT名:属性名的层级写法做映射
内容的提问来源于stack exchange,提问作者Tuyen Nguyen
相关产品推荐
相关产品推荐

