我需要帮助以下情况。
我有一个MySQL表: -
CREATE TABLE employees (
emp_no INT NOT NULL, -- AUTO_INCREMENT??
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
user_id INT NOT NULL, -- This is primary key of another table.
PRIMARY KEY (emp_no));
此表有大约20000条记录。
我将这个MySQL表转移到Cassandra表,如下所示。
CREATE TABLE employees (
emp_no uuid,
birth_date timestamp,
first_name text,
user_id uuid,
PRIMARY KEY (emp_no));
现在我想将MySQL表中的所有20000条记录导出到Cassandra表。
user_id列是另一个表中的主键,first_name列也是使用user_id列映射的。
请让我知道如何实现这一目标。
以下是我正在使用的datastax版本的详细信息。 [cqlsh 5.0.1 | Cassandra 2.1.15.1403 | DSE 4.8.9 | CQL规范3.2.1 |原生协议v3]
请建议我从MySQL到Cassandra的数据迁移的最佳方式。
答案 0 :(得分:1)
上面的数据流方案非常适用于您的情况。另一种方法是创建一个小型java项目,为您完成。在您的情况下,从mysql表到cassandra表的模型是相同的。所以你可以做到以下几点:
您的员工类应如下所示
@Table(keyspace = "your_keyspace", name ="employees")
public class Employee
{
@PartitionKey(0)
@Column(name = "emp_no")
protected UUID employeeNo;
@Column(name = "birth_date")
protected Timestamp birthDate;
@Column(name = "first_name")
protected String firstName;
@Column(name = "user_id")
protected UUID userId;
}
当然Java不是你唯一的选择。 Datastax驱动程序可用于许多语言,如C#或python。
答案 1 :(得分:0)
更多信息:https://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html
请将您的mysql数据转换为CSV并导入到cassandra表中。这项工作我已经检查了这个。