美文网首页
MySQL不同数据库不同数据表导入数据

MySQL不同数据库不同数据表导入数据

作者: 很少更新了 | 来源:发表于2017-06-06 20:13 被阅读263次

MySQL不同数据库不同数据表导入数据

今天在一个库里面相互到两张表的数据,我之前只会一种方法:

INSERT INTO A SELECT * FROM B;

这个方法的意思是将b表的所有数据全部导入到a表中,注意:

a、b表的数据结构相同;

相当于复制了b表数据到a表

这样可以简单完成功能,但是当需求变成这样:

a、b表数据结构不一样;

或者只需导一部分数据

或者导入数据是有重复的

这个sql就无能为力了,我们以各种情况来说。

首先有a表,结构如下:

create table `table_a` (
`id` bigint(20) not null auto_increment comment '主键,长整型,自增',
`user_id` varchar(32) default null comment '用户id',
`name` varchar(50) default null comment '名字',
`email` varchar(30) not null comment '邮箱',
primary key (`id`)
) engine=innodb default charset=utf8;

然后是b表,结构如下,

CREATE TABLE `table_b` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,长整型,自增',
`user_id` varchar(32) DEFAULT NULL COMMENT '用户id',
`user_name` varchar(50) DEFAULT NULL COMMENT '名字',
`email` varchar(30) NOT NULL COMMENT '邮箱',
`course` varchar(30) NOT NULL COMMENT '课程',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

情形如下:

(1)导入的数据在a表中完全不存在

INSERT INTO table_a (id,user_id,name,email) SELECT id,user_id,user_name,email FROM table_b;

或者不需要id的情况,

INSERT INTO table_a (user_id,name,email) SELECT user_id,user_name,email FROM table_b;

如果有重复的可以使用replace into 这个,但是请慎重使用replace,保证你对replace有足够的了解!

(2)导入的数据部分存在

数据部分存在为了区分需要在两个表添加唯一索引

两个表中分别为user_name和name字段添加唯一索引

第一种情形,

使用replace into的方式进行导入数据(这里根据唯一索引进行判断,如果不添加唯一索引的方式,除了id主键不同外,其他均相同的情况下也视为相同)

第二种情形,

忽略重复的,即如果有发现重复的行,则跳过此行数据的插入,必须使用ignore关键字,

INSERT IGNORE INTO table_a (id,user_id,name,email) SELECT id,user_id,user_name,email FROM table_b;

相关文章

  • MySQL不同数据库不同数据表导入数据

    MySQL不同数据库不同数据表导入数据 今天在一个库里面相互到两张表的数据,我之前只会一种方法: 这个方法的意思是...

  • golang对mysql的基本操作

    golang 操作mysql 导入数据库驱动 mysql连接配置 建立连接 数据模型 数据表结构 查询单行 注意:...

  • Mysql数据库分区(PARTITION)操作记录

    mysql的数据库分区是什么? mysql的数据库分区,是将数据表的数据文件和索引文件按照规则分别存储在不同文件中...

  • 一次kettle性能优化

    将2.04G的数据导入到mysql数据库中,数据格式是json格式,由于包含不同类型的数据,需要将不同类型的数据进...

  • MySQL语句实例

    字符串条件查询要加引号 导入数据库或数据表 source /root/admin.sql 或mysql -uroo...

  • MySQL基础——DDL语句

    MySQL MySQL是一个关系型数据库管理系统,其数据是保存在不同的数据表中,而不是将所有数据放在一个大仓库内,...

  • aliyun.CentOS7.MySQL操作.2017-09-2

    初始化MySQL数据库 MySQL数据导入导出查看MySQL数据库的命令 MySQL数据导出到表 MySql数据库...

  • bae上传django的mysql

    在bae的mysql中,可以手动输入创建数据表,也可以从把本地的数据库表导出再上传到bae中的mysql 推荐导入...

  • 三、mysql数据库服务配置与简单使用

    mysql数据库简介mysql是典型的关系型数据库管理系统,数据库中包含多张数据表,数据以记录的形式存在于数据表中...

  • 3 MySQL数据库操作

    2 MySQL数据库操作 3.1 MySQL操作数据库 3.2 MySQL操作数据表 3.2.1 MySQL创建数...

网友评论

      本文标题:MySQL不同数据库不同数据表导入数据

      本文链接:https://www.haomeiwen.com/subject/aeenfxtx.html