mysql导入数据覆盖原数据?

大佬们,比如把mysql中一个表按月份导出,再导入的时候先导入一月份的数据,再导入二月份的数据,二月就会把一月的覆盖,怎么导入才能只增加不覆盖?

2回答

yhd_myyhd_my  数据库管理员 , 金融工场
wclmicronetchinesezzqiang等赞同了此回答
说实话,MYSQL我还不是很精通,但是你这个需求,我认为可以将二月的数据导入到新表,再用insert into 1_mounth_data select * from 2_month_data; 这种方法临时处理。希望MYSQL专家给出更好的建议。 显示全部

说实话,MYSQL我还不是很精通,但是你这个需求,我认为可以将二月的数据导入到新表,再用insert into 1_mounth_data select * from 2_month_data; 这种方法临时处理。希望MYSQL专家给出更好的建议。

收起
 2017-12-07
煎山药煎山药  系统运维工程师 , 北京千眼数合
liujiacai刘诚杰赞同了此回答
我来回答吧,现在找到方法了。1.首先导出时可以只导出创建表结构的语句,注意选项-d,表示只导出表结构mysqldump -uroot -B 库名 --tables 表名 -d --master-data=2 --force -S /usr/local/mariadb_3306/mariadb.sock >/data/table-structure2.然后再按月份导出数据文件,注意...显示全部

我来回答吧,现在找到方法了。
1.首先导出时可以只导出创建表结构的语句,注意选项-d,表示只导出表结构
mysqldump -uroot -B 库名 --tables 表名 -d --master-data=2 --force -S /usr/local/mariadb_3306/mariadb.sock >/data/table-structure
2.然后再按月份导出数据文件,注意选项-t,只导出表数据
mysqldump -uroot -B 库名 --tables 表名 -t --master-data=2 --force -S /usr/local/mariadb_3306/mariadb.sock --where="createTime<'2016-11-01 00:00:00'" >2016-11
3.然后先导入表结构语句
mysql -uroot -B 库名 --force -S /usr/local/mariadb_3309/mariadb.sock </data/table-structure
4.再依次导入数据
mysql -uroot -B 库名 --force -S /usr/local/mariadb_3309/mariadb.sock <2016-11
5.直接使用mysqldump导出时,默认导出了数据和表结构,导入时会判断表是否存在,存在则删除,新建一个,就会把原来已导入的数据一起删除,出现了覆盖的效果。

收起
 2017-12-07

提问者

煎山药系统运维工程师, 北京千眼数合

问题状态

  • 发布时间:2017-12-07
  • 关注会员:2 人
  • 问题浏览:146
  • 最近回答:2017-12-07
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2017 talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30