专栏首页宣言(Siam)博客Navicat数据同步,主键重复无法插入

Navicat数据同步,主键重复无法插入

基础知识

Navicat是一个非常好用的可视化mysql管理软件(其他数据库也有对应版本的支持)

它拥有非常丰富的功能,结构同步、数据同步、数据传输、进程监控、数据导出导入等等

但这是一个付费软件,新用户可以免费试用,这个问题是笔者在以前试用处理数据的时候遇到的。

问题

在A和B机器上分别有结构相同数据不完全相同的两个数据库

比如

A机器上的表

id

name

age

1

宣言

21

2

Siam

21

B机器上的表

id

name

age

1

宣言B

22

2

SiamB

22

现在要实现的点是:将两个表的数据合并为一个,以后统一使用一个数据库即可。

在使用数据同步的时候,能筛选出不同数据,但是却不能运行,因为筛选出的数据主键在第二个数据库中已经被占用。

使用软件,选择A同步到B,那么会筛选出id 1 2两条数据

生成的语句却是以下这样子的

insert into 表名 (id, name, age) values (1, '宣言', 21) ...

在B中运行这样的语句。主键id重复,自然就会产生失败了

问题怎么解决

因为我这里需要处理的数据量比较小

我这里采用的是比较直接的方法,如果有更好的方式,请大家在评论中留言,一起探讨

  • 在A中筛选出差异数据(可以根据软件或者其他筛选条件等)
  • 数据压缩成json字符串,大概如图所示
  • json文件上传到B机器中,写一个脚本,读取json 并且删除id主键,重新生成insert语句
$data = file_get_contents("./data.txt");
$data = json_decode($data, true);

foreach ($data as $key => $value){
    unset($value['id']);
    $sql = "INSERT xxx " . array_to_sql($value);
    mysql_query($sql,$db);
}
echo "ok";

因为是一个临时的脚本,这里就没有引入其他类库,用了面向过程的php代码来完成,大概思路就是这样子。

如果是使用mysqladmin,还可以在导出的时候直接选成导出php array 也许会更方便哦!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 无限级子商户的查询优化方法

    A 有 2 个直接下级B、C,    B有2个直接下级D、E,    C有2个直接下级F、G

    宣言言言
  • PhpSpreadsheet导出Excel表格,长数字自动转科学计数法

    这样子就可以实现传入一个数组data,然后快速导出成Excel表格了。 但是遇到长数字的时候,就会被转成科学计数法的数字,并且会丢失最后的精度 全部转成了 0

    宣言言言
  • php 微信支付分 开发过程 H5商城先享后付

    公司项目需要,在H5商城、小程序商城、APP商城、线下促销场景,推出最新的微信支付分功能。

    宣言言言
  • 使用Vue快速开发单页应用-登录页面

    前面两篇都是介绍组织结构和vue-router,从本文开始我们将讲一些如何优雅的用vue编写单页应用。首先我们从登录页面以及开始,因为后续很多其它的页面都需要登...

    前端博客 : alili.tech
  • [Python]用matplotlib画以时间日期为x轴的图像

    原文链接:https://blog.csdn.net/humanking7/article/details/80802435

    祥知道
  • GitLab+Jenkins持续集成

    GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码...

    py3study
  • 乌镇AI论坛最全盘点:中国互联网半壁江山坐在了一起,他们怎么看AI

    编辑:弗格森、全月、佩琦、刘光明 【新智元导读】 “乌镇时间”,世界互联网大会AI论坛,新智元带来最强盘点。企业界,中国联合网络通信有限公司总经理陆益民先生,百...

    新智元
  • 了解 Sklearn 的数据集

    学习资料:大家可以去莫烦的学习网站学到更多的知识。 学习资料: 相关代码 更多可用数据 网址 ---- ? 今天来看 Sklearn 中的 data s...

    杨熹
  • 赫尔辛基大学AI基础教程:总结(6.3节,最终章)

    决定我们的社会如何适应人工智能带来的变化的最重要的决定并不是技术性的。他们是政治性的。

    AiTechYun
  • π框架之实战项目(代码分享)

    通过之前的学习,本文主要介绍一下实现用户的登录、注册等功能的接口代码,让大家通过小实战来感悟phalapi框架的神奇之处。(以下代码均可右滑) ? 获取参数规则...

    benny

扫码关注云+社区

领取腾讯云代金券