导入 csv 文件
通过 LOAD DATA 命令加载 CSV 文件中的数据到数据库表中。
准备 CSV 文件
说明:将相关文件上传至服务器 /root路径下,可以直接导数据。
使用 more 命令查看 CSV 文件。
more employee_csv.csv
输出如下:
[root@iZbp1gn42x4y0k0m5d6gc8Z ~]# more employee_csv.csv
"emp_no","birthday","name"
1001,"2024-08-02","xiaohong"
1002,"2024-08-29","xiaofeng"
连接集群的 MySQL 租户
在 OBserver 节点上,通过本地 Unix Socket 连接集群的 MySQL 租户。
obclient -S /root/observer/run/sql.sock -uroot@mysql_tenant -Dtestdb -A
配置数据库可访问路径
配置数据库可以访问的路径 /root/。
SET GLOBAL secure_file_priv = "/root/";
重新连接数据库
exit
说明: 设置 secure_file_priv 后,就可以使用普通连接串来连数据库,不再需要使用 sock 连接。
使用 root 用户登录 obcluster 集群的 mysql_tenant 租户。
obclient -h127.0.0.1 -P2883 -uroot@mysql_tenant#obcluster -Dtestdb -A 
创建目标表 t1
CREATE TABLE testdb.employee (
emp_no int(120) COMMENT '员工工号' NOT NULL,
birthday date COMMENT '员工生日' NULL,
name varchar(120) COMMENT '员工姓名' NULL,
CONSTRAINT cons_employee_empno PRIMARY KEY (emp_no)
) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
设置超时时间
set ob_query_timeout = 10000000000;
往目标表 employee 中插入数据
通过旁路导入往目标表 employee 中插入数据。
LOAD DATA INFILE '/root/employee_csv.csv'
                   INTO TABLE employee
                   FIELDS TERMINATED BY ','
                   ENCLOSED BY '"'
                   LINES TERMINATED BY '\r\n'
                   IGNORE 1 LINES;
执行合并
ALTER SYSTEM MAJOR FREEZE;
查看表中的数据
select * from testdb.employee;
输出结果如下:
obclient [testdb]> select * from testdb.employee;
+--------+------------+----------+
| emp_no | birthday   | name     |
+--------+------------+----------+
|   1001 | 2024-08-02 | xiaohong |
|   1002 | 2024-08-29 | xiaofeng |
+--------+------------+----------+
2 rows in set (0.004 sec)