0

我有 2 个 mysql 表,如下所示

表员工:

id int,名称 varchar

表电子邮件

emp_id int, email_add varchar

表电子邮件和员工通过employee.id = emails.emp_id 连接

我有这样的条目:

mysql> 从员工中选择 *;

id       name
1         a    
2         b   
3         c   

mysql> 从电子邮件中选择 *;

  empd_id  emails         

   1      aa@gmail.com   
   1      aaa@gmail.com  
   1      aaaa@gmail.com 
   2      bb@gmail.com   
   2      bbb@gmail.com  
   3      cc@gmail.com   

6 行一组(0.02 秒)

现在我想以以下 2 种格式将数据导入 cassandra

---格式1---

cassandra 中的表:emp_details:

id , name , email map{text,text}

即数据应该像

1,一个,{'email_1':'aa@gmail.com','email_2:'aaa@gmail.com','email_3':'aaaa@gmail.com'}

2 , b , {'email_1' :'bb@gmail.com' ,'email_2':'bbb@gmail.com'}

3, c, {'email_1' : 'cc@gmail.com'}

---- 格式 2 ----

我想要动态列

id , 姓名, email_1 , email_2 , email_3 .... email_n

请帮助我。我主要关心的是从mysql导入数据到以上2种格式。

4

1 回答 1

0

编辑:将列表更改为地图

从逻辑上讲,您不希望用户拥有超过 1000 封电子邮件,我建议使用 Map<text, text> 甚至 List<text>。它非常适合 CQL 集合。

CREATE TABLE users (
   id int,
   name text,
   emails map<text,text>,
   PRIMARY KEY(id)
);

INSERT INTO users(id,name,emails)
VALUES(1, 'a', {'email_1': 'aa@gmail.com', 'email_2': 'bb@gmail.com', 'email_3': 'cc@gmail.com'});
于 2016-02-04T13:30:26.487 回答