mysql导出到txt,再从txt导入

背景

最近在做运维有关的数据分析,需要从一个A表中读取数据,但A表缺少很多关键字段,需要新增字段并补充内容后才能进行下一步分析,但是我对A表无管理权限。于是我的思路是:从A表读取一部分数据到txt,在另一个数据库实例中创建一个B表(B表字段在A表基础上增加了6个),将得到的txt导入到B表;就这样一个简单的需求,中途遇到很多坎儿,才猛然发现对数据库的维护早已久疏阵仗了。

过程

1.从a表导出到txt
mysql -uuser01 -ppassword -h127.0.0.1 -N -e  "use a_db;select n1,n2,n3 from a_table where time >= $startTime and time <= $endTime;" > /tmp/a.txt
#select的字段顺序必须和接下来导入时保持一致,才能保证txt插入B表时,字段和内容不混乱
2.将txt导入到b表
#需要进入b_db库,在命令行界面对b_table直接操作
LOAD DATA LOCAL INFILE '/tmp/a.txt' INTO TABLE b_table (n1,n2,n3);
#b_table()中的字段必须和导出时的顺序一致,b_table多出来的字段则使用字段默认值

#如果中途有报错,搜到的内容大多给的解决方法是,通过下面两个命令开启允许本地文件导入
show global variables like 'local_infile';
SET GLOBAL local_infile=1;

#之后,我再次尝试将txt导入还是失败的。通过一番摸索最终使用下面的参数进入mysql,执行导入txt才算成功
mysql --local-infile=1 -u user01 -p1 -ppassword -h127.0.0.1   #这个地址是b_table的地址
3.命令行远程导入txt
mysql --local-infile=1 -u user01 -p1 -ppassword -h127.0.0.1 -e "use b_db;LOAD DATA LOCAL INFILE '/tmp/a.txt' INTO TABLE b_table (n1,n2,n3);"
#地址是b表的地址
4.txt导入只影响了一行
#通过查看警告信息,发现b_table新增的字段中有一个id字段,主键,且不是自增,就导致主键重复;稍后给主键增加自增属性解决。

结束

有遇到相关问题的,欢迎下方留言!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值