mycat1.6使用案例----load data file使用示例(ER分片字表数据导入)

1、mysql提供了高效的数据导入命名 load data infile:
基本语法:
load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name,   )]
具体说明请参考网上的一篇博客: http://blog.csdn.net/u014082714/article/details/53173975
2、示例环境
基于mycat1.6分支,es_seller_community(ER分片字表)
演示的表结构如下:
CREATE TABLE `es_seller_community` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `seller_id` int(11) DEFAULT NULL COMMENT '商家ID',
  `community_id` int(11) DEFAULT NULL COMMENT '小区ID',
  `status` int(11) DEFAULT NULL COMMENT '预留字段',
  `comu_type` int(11) DEFAULT '1' COMMENT '小区服务类型:1-显示,2-配送',
  PRIMARY KEY (`id`),
  KEY `inx_es_seller_community_csid` (`seller_id`,`community_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=25195 DEFAULT CHARSET=utf8 COMMENT='商户服务小区表';

该表作为es_seller的字表(ER分片),ER分片配置如下:

 

3、导入步骤
1、将es_seller_community数据导出txt文件。本例使用Navicat for Mysql 工具进行导出
1)在es_seller_community表上右键,点击【导出向导】

2)设置需要导出的表以及存放路径

 

 

 

3)选项导出的列:

4)设置记录分割符与字段分割符,对应load data infile语法中的(fileds,line分隔符定义),一般默认即可。

 

然后下一步,点击完成即可。
导出的文件数据如下:

 

 

 

 

2、连接mycat,导入数据
# mysql -u root -p -P 8066 // 回车输入密码登录
# use es_db;                        //切换到schema,也可以使用show database;查看mycat定义的schema。
# load data local infile 'data/es_community_sku.txt' into table es_community_sku;

 

 

 

错误日志:

修复代码:

mycat1.6 报如下错误,跟踪代码发现,mycat1.6在处理数据迁移时留下一个小小的bug,如果是全局表,或非分片表,table标签上的rule属性为空,此处会报空指针,修复代码如下:

 

如果是发行版的话,源码修复代码后,将编译成jar包,放入mycat安装目录下的lib目录下即可。
修复后,继续执行命令
load data local infile 'data/es_community_sku.txt' into table es_community_sku;

 

 

 

继续跟踪日志:

 

上面的错误提示我们,在往分片表插入数据时,insert 字段中要显示包括分片字段,也就是
 insert into es_community_sku(id,sku_id,community_id,goods_id,seller_id)  values (1,1,1,1),
load data infile语句可以显示字段:
# load data local infile 'data/es_community_sku.txt' into table es_community_sku(id,sku_id,community_id,goods_id,seller_id);
导入成功后的提示信息:

这样数据将会自动分片,路由到指定的节点。

 

myact load data infile 数据导入就介绍到这里。
 
错误日志信息:
1、ERROR 3009 (HY000):  服务器可能出现了空指针异常。
2、ERROR 2013 (HY000): Lost connection to MySQL server during query;服务端报错,该类错误一般是不符合mycat的操作规范,比如在往ER分片字表出插入数据时需要指定分片键等等。
 

欢迎加笔者微信号(dingwpmz),加群探讨,笔者优质专栏目录:

1、源码分析RocketMQ专栏(40篇+)
2、源码分析Sentinel专栏(12篇+)
3、源码分析Dubbo专栏(28篇+)
4、源码分析Mybatis专栏
5、源码分析Netty专栏(18篇+)
6、源码分析JUC专栏
7、源码分析Elasticjob专栏
8、Elasticsearch专栏
9、源码分析Mycat专栏

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中间件兴趣圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值