MySQL从不同数据库的不同数据表中导入数据

背景

现在我有这样的要求:

数据库A的用户表需要导入到数据库B的帐户表中。

用户表字段:用户名,用户名,电子邮件,密码,注册日期,盐

帐户表字段:ID、名称、电子邮件、密码、类型、盐

进口领域唯一的用户名,电子邮件,密码,盐,和注册日期需要满足一定的条件

这里有几个写sql的案例,主要区分插入和替换

情况

导入的数据在B库表中是完全不存在的。

直接插入为好,与替换生效相同。




插入'帐户'(姓名,密码,电子邮件,盐)
选择用户名,密码,电子邮件,盐
来自用户
在注册日期> 1418313600



导入的数据部分存在

数据部分的存在是为了区分需要将唯一索引添加到两个表中,该字段必须是导入字段中惟一字段的值(唯一)。

我为两个表中的用户名和name字段添加唯一索引

直接置换

当替换为操作时,如果重复两个表数据(必须定义唯一),它将首先删除该行(注意它是一整行),然后执行插入操作。

结果是帐户表中的类型字段(如果有值)将被直接删除并重新插入,这将成为默认值。


替换成帐户(名称,密码,电子邮件,盐)
选择用户名,密码,电子邮件,盐
来自用户
在注册日期> 1418313600



忽略重复

使用忽略关键字,如果遇到重复,当前行将不被操作。




将忽略插入帐户(姓名、密码、电子邮件、盐)
选择用户名,密码,电子邮件,盐
来自用户
在注册日期> 1418313600



局部更新

如果你想更新密码和盐字段,你可以使用重复密钥更新。




插入` B `。` u_account `(姓名、密码、电子邮件、盐)
选择用户名,密码,电子邮件,盐
从`一` ` bbs_ucenter_members `。
在注册日期> 1418313600重复关键更新密码=值(密码),盐(盐)=价值



总结

替换变得更猛烈,而且因特网被小心使用。最好用插入代替它。



怀疑

上面的操作是同一台服务器上的两个数据库,可以直接进行SQL操作。

如果要在两个不同的服务器上引导的两个库呢

目前的临时办法是:

将用户表从库导入到B库中的另一个服务器,然后编写一个SQL来完成它。

或查询指定的数据,导出SQL,并用INSERT替换插入到SQL中(有限制)。

以上是本文的全部内容,希望大家能喜欢。