MySQL load data from file

本文介绍了如何将Redis RDB文件的数据高效地导入到MySQL中。内容涉及表结构、数据文件格式、MySQL的操作权限要求,以及如何处理字段数量不匹配和字段分隔符等问题。通过`LOAD DATA INFILE`命令,配合指定文件路径、字段和忽略表头选项,实现快速录入数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求背景:将redis rdb解析的结果集文件快速录入的mysql

表结构

CREATE TABLE `redis_analyze` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `db_index` int(11) DEFAULT NULL COMMENT 'redis db 下标',
  `key_name` varchar(255) DEFAULT NULL COMMENT 'key name',
  `data_type` varchar(20) DEFAULT NULL COMMENT '数据类型',
  `expiry` int(11) DEFAULT NULL COMMENT '是否设置过期时间0-未设置,1-设置',
  `element_count` int(11) DEFAULT NULL COMMENT '列表或hash等集合数据结构的key元素个数',
  `total_size` int(11) DEFAULT NULL COMMENT 'values大小,单位字节',
  `cluster_name` varchar(50) DEFAULT NULL COMMENT '集群名',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `udk_key` (`cluster_name`,`key_name`)
) ENGINE=InnoDB AUTO_INCREMENT=256 DEFAULT CHARSET=utf8mb4

待导入的数据文件格式

cat rdb_bigkey.txt
db key dataType expiry elementCount totalSize(byte)
0 KEY_1 string 0 1 52981
0 KEY_X string 0 1 54360
  • 官方文档上未找到选择性录入文本中字段的方法
  • 操作mysql的用户需要具备file权限
  • 通过loccal指定从客户端寻找文件,否则从server端寻找文件
  • 文本中的字段个数一定要和表中字段数量或者手动指定的字段数量一样
  • 对于文本中没有的表字段可以通过set赋值
  • 可以通过ignore 忽略表头
  • 字段分割符号默认非空格,所以要指定分隔符为空格

具体sql

load data local infile './rdb_bigkey.txt' replace into table redis_analyze FIELDS TERMINATED BY ' ' IGNORE 1 rows  (db_index,key_name,data_type,expiry,element_count,total_size)  set cluster_name='test';
Query OK, 11 rows affected, 2 warnings (0.01 sec)
Records: 11  Deleted: 0  Skipped: 0  Warnings: 2

如果是从标准输出中load数据,可以这样写
方法来自

bash
awk '{ /* My script that spits out a CSV */ }' | mysql --local-infile=1 -u user -ppassword mydatabase -e "LOAD DATA LOCAL INFILE '/dev/stdin' INTO TABLE mytable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值