mysql 批量导入数据

在我们使用数据库的过程中,避免不了备份、恢复、导入、导出数据,方法比较多,根据不同的数据量选择不同的方法,会提高我们的工作效率,

(1)从表A导入数据到表B;一般涉及到表结构相同或者表结构不同等情况,数据量少的时候效率很高,

测试表A为 send_done,创建语句为下面内容,

CREATE TABLE `send_done` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `phone` varchar(20) NOT NULL,
  `content` varchar(1000) NOT NULL,
  `intime` datetime NOT NULL,
  `state` int(11) NOT NULL,
  `sendtime` datetime DEFAULT NULL,
  `statcode` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `ind_state` (`state`)
) ENGINE=InnoDB AUTO_INCREMENT=1166482 DEFAULT CHARSET=utf8
CREATE TABLE `send_sf_done` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `phone` varchar(20) NOT NULL,
  `content` varchar(1000) NOT NULL,
  `intime` datetime NOT NULL,
  `state` int(11) NOT NULL,
  `sendtime` datetime DEFAULT NULL,
  `statcode` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `ind_state` (`state`)
) ENGINE=InnoDB AUTO_INCREMENT=1166482 DEFAULT CHARSET=utf8

表A的数据
MariaDB [wangjubao]> select  *  from  send_done;
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
| id      | phone       | content                        | intime              | state | sendtime            | statcode            |
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
| 1166459 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:33:02 |     1 | 2016-11-04 10:44:21 | 2114782562554393363 |
| 1166461 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:45:53 |    -3 | 2016-11-04 10:46:05 | -3                  |
| 1166463 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:47:42 |    -3 | 2016-11-04 10:47:54 | -3                  |
| 1166465 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:49:08 |    -3 | 2016-11-04 10:49:19 | -3                  |
| 1166467 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:55:33 |     1 | 2016-11-04 10:55:53 | 2114782569505307918 |
| 1166469 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:10:20 |    -3 | 2016-11-04 11:15:17 | -3                  |
| 1166471 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:16 |     1 | 2016-11-04 11:23:18 | 2114782586069773509 |
| 1166473 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:34 |     1 | 2016-11-04 11:23:35 | 2114782586234583070 |
| 1166475 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:34 |     1 | 2016-11-04 11:23:35 | 2114782586234583070 |
| 1166477 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:35 |     1 | 2016-11-04 11:23:36 | 2114782586244477897 |
| 1166479 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:35 |     1 | 2016-11-04 11:23:36 | 2114782586244477897 |
| 1166481 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:35 |     1 | 2016-11-04 11:23:36 | 2114782586244477897 |
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
1、从表A导入表B
 insert  into  send_done  select *  from send_sf_done; (字段全部一样时不用写字段)
 2、从表A导出文本加载到B
 导出数据
 select   *  from  send_done  into outfile "/tmp/winn.sql ";
 
 MariaDB [wangjubao]>  select   *  from  send_done  into outfile "/tmp/winn.sql "
    -> ;
Query OK, 12 rows affected (0.00 sec)
 检查导出文件
[[email protected] tmp]# cat  winn.sql
1166459 15021970243     冬天到了【云信测试】    2016-11-04 10:33:02     1       2016-11-04 10:44:21     2114782562554393363
1166461 15021970243     冬天到了【云信测试】    2016-11-04 10:45:53     -3      2016-11-04 10:46:05     -3
1166463 15021970243     冬天到了【云信测试】    2016-11-04 10:47:42     -3      2016-11-04 10:47:54     -3
1166465 15021970243     冬天到了【云信测试】    2016-11-04 10:49:08     -3      2016-11-04 10:49:19     -3
1166467 15021970243     冬天到了【云信测试】    2016-11-04 10:55:33     1       2016-11-04 10:55:53     2114782569505307918
1166469 15021970243     冬天到了【云信测试】    2016-11-04 11:10:20     -3      2016-11-04 11:15:17     -3
1166471 15021970243     冬天到了【云信测试】    2016-11-04 11:23:16     1       2016-11-04 11:23:18     2114782586069773509
1166473 15021970243     冬天到了【云信测试】    2016-11-04 11:23:34     1       2016-11-04 11:23:35     2114782586234583070
1166475 15021970243     冬天到了【云信测试】    2016-11-04 11:23:34     1       2016-11-04 11:23:35     2114782586234583070
1166477 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
1166479 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
1166481 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
 
删除之前从A表导入B表的数据,
MariaDB [wangjubao]> delete   from send_sf_done;
Query OK, 12 rows affected (0.00 sec)

MariaDB [wangjubao]> select  *  from  send_sf_done;
Empty set (0.00 sec)

加载导出的文件
load data infile ‘/tmp/winn.sql‘ into table  send_sf_done;

MariaDB [wangjubao]> load data infile ‘/tmp/winn.sql‘ into table  send_sf_done;
Query OK, 12 rows affected (0.00 sec)               
Records: 12  Deleted: 0  Skipped: 0  Warnings: 0

MariaDB [wangjubao]> select  *  from  send_sf_done;
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
| id      | phone       | content                        | intime              | state | sendtime            | statcode            |
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
| 1166459 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:33:02 |     1 | 2016-11-04 10:44:21 | 2114782562554393363 |
| 1166461 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:45:53 |    -3 | 2016-11-04 10:46:05 | -3                  |
| 1166463 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:47:42 |    -3 | 2016-11-04 10:47:54 | -3                  |
| 1166465 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:49:08 |    -3 | 2016-11-04 10:49:19 | -3                  |
| 1166467 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 10:55:33 |     1 | 2016-11-04 10:55:53 | 2114782569505307918 |
| 1166469 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:10:20 |    -3 | 2016-11-04 11:15:17 | -3                  |
| 1166471 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:16 |     1 | 2016-11-04 11:23:18 | 2114782586069773509 |
| 1166473 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:34 |     1 | 2016-11-04 11:23:35 | 2114782586234583070 |
| 1166475 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:34 |     1 | 2016-11-04 11:23:35 | 2114782586234583070 |
| 1166477 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:35 |     1 | 2016-11-04 11:23:36 | 2114782586244477897 |
| 1166479 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:35 |     1 | 2016-11-04 11:23:36 | 2114782586244477897 |
| 1166481 | 15021970243 | 冬天到了【云信测试】           | 2016-11-04 11:23:35 |     1 | 2016-11-04 11:23:36 | 2114782586244477897 |
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+

方法3 使用select 导出数据
  mysql  -u  root  -p  -e  "select  *  from wangjubao.send_done;" >/tmp/winner2.sql
检查数据
[[email protected] tmp]# cat  winner2.sql
id      phone   content intime  state   sendtime        statcode
1166459 15021970243     冬天到了【云信测试】    2016-11-04 10:33:02     1       2016-11-04 10:44:21     2114782562554393363
1166461 15021970243     冬天到了【云信测试】    2016-11-04 10:45:53     -3      2016-11-04 10:46:05     -3
1166463 15021970243     冬天到了【云信测试】    2016-11-04 10:47:42     -3      2016-11-04 10:47:54     -3
1166465 15021970243     冬天到了【云信测试】    2016-11-04 10:49:08     -3      2016-11-04 10:49:19     -3
1166467 15021970243     冬天到了【云信测试】    2016-11-04 10:55:33     1       2016-11-04 10:55:53     2114782569505307918
1166469 15021970243     冬天到了【云信测试】    2016-11-04 11:10:20     -3      2016-11-04 11:15:17     -3
1166471 15021970243     冬天到了【云信测试】    2016-11-04 11:23:16     1       2016-11-04 11:23:18     2114782586069773509
1166473 15021970243     冬天到了【云信测试】    2016-11-04 11:23:34     1       2016-11-04 11:23:35     2114782586234583070
1166475 15021970243     冬天到了【云信测试】    2016-11-04 11:23:34     1       2016-11-04 11:23:35     2114782586234583070
1166477 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
1166479 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
1166481 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
处理第一行
sed   -i  "1,1d"  /tmp/winner2.sq
处理结果
1166459 15021970243     冬天到了【云信测试】    2016-11-04 10:33:02     1       2016-11-04 10:44:21     2114782562554393363
1166461 15021970243     冬天到了【云信测试】    2016-11-04 10:45:53     -3      2016-11-04 10:46:05     -3
1166463 15021970243     冬天到了【云信测试】    2016-11-04 10:47:42     -3      2016-11-04 10:47:54     -3
1166465 15021970243     冬天到了【云信测试】    2016-11-04 10:49:08     -3      2016-11-04 10:49:19     -3
1166467 15021970243     冬天到了【云信测试】    2016-11-04 10:55:33     1       2016-11-04 10:55:53     2114782569505307918
1166469 15021970243     冬天到了【云信测试】    2016-11-04 11:10:20     -3      2016-11-04 11:15:17     -3
1166471 15021970243     冬天到了【云信测试】    2016-11-04 11:23:16     1       2016-11-04 11:23:18     2114782586069773509
1166473 15021970243     冬天到了【云信测试】    2016-11-04 11:23:34     1       2016-11-04 11:23:35     2114782586234583070
1166475 15021970243     冬天到了【云信测试】    2016-11-04 11:23:34     1       2016-11-04 11:23:35     2114782586234583070
1166477 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
1166479 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
1166481 15021970243     冬天到了【云信测试】    2016-11-04 11:23:35     1       2016-11-04 11:23:36     2114782586244477897
加载数据

时间: 2024-08-19 22:55:45

mysql 批量导入数据的相关文章

MySQL批量导入Excel数据

MySQL批量导入Excel数据 1.确定需要导入数据的表名称以及字段,然后在新建的Excel表中,按照表字段正确排序:(注:(Excel文件的名称最好和数据库的名称一致,sheet表的名字最好和表名称一致,方便需要导入多张表数据时一一对应)) 2.在Excel表中,正确填写需要导入的数据,一行数据对应着数据库表中的一行记录:(注:各个字段的格式要求需要和数据库中的限制一样,避免出现差错) 3.收集好需要导入的数据后,点击保存.(注:导入的时候,Excel文件处于打开状态) 4.选中需要导入数据

数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑

我现在批量往数据库里导正式数据(sql insert),但是数据中有三列分别是岗位,办事处,大区,给的数据中只给了岗位的值,办事处的值可以通过岗位值在岗位表查到,大区的值可以通过办事处的值在办事处表里查到.现在我已经把其他数据都导进去了,只剩办事处和大区没有值,我该如何批量更新这两列的值啊 导入的数据的表: 岗位表: 办事处表: 本人sql不是很好,希望sql大神能给出来解惑一下,拜谢~ 数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑 >> mysql 这个答案描

Dynamics 2015 数据管理 之 如何批量导入数据到 正式区(一)

单一个项目的数据导入可以在具体功能 中导入,大体位置如下. 如果项目新上线的话,要批量导入数据的话,就要到如下的功能中实现了. 进入方式: 在 设置 ---- 数据管理 下载 下载后,用EXCEL打开, 给业务人员批量输入数据. 编辑好以后,上传吧,点 导入. 下一步即可以,导入以后,可以返回看看数据导入的情况,格式有没有错误等.

django 批量导入数据

一.需求 我在数据库中建了一张表,用来保存ucloud云上的project id 和project name models.py代码如下 #coding:utf-8 from django.db import models class Project(models.Model):     name = models.CharField(u'项目名称',max_length=32,blank=True)     id = models.CharField(u'项目ID',max_length=32

利用OLEDB+SqlClient实现EXCEL批量导入数据

以下是几个自己写的类 /// <summary> /// 取得Excel对象 /// </summary> /// <param name="strConn">OLEDB连接字符串</param> /// <param name="sql">SQL语句</param> /// <returns></returns> public static DataTable GetE

mysql 批量导入 Packets larger than max_allowed_packet are not allowed

解决方法  :http://blog.csdn.net/gtosky4u/article/details/8581281 mysql 批量导入 Packets larger than max_allowed_packet are not allowed,布布扣,bubuko.com

asp.net线程批量导入数据时通过ajax获取执行状态

最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过ajax调用session里的执行状态,从而实现反馈导入状态的功能! 上代码: 前端页面 <!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8

redis pipe 批量导入数据

redis pipe 批量导入数据 速度非常快, 文本需要支持redis的协议, 使用Python生成文件 代码如下 delimiter = "\r\n" data = "*3" + delimiter + "$3" + delimiter + "set" + delimiter + "$" + str(len(row[0])) + delimiter + row[0] + delimiter + &quo

mysql批量插入数据

review代码发现,同事mysql批量插入数据的实现方法是,用for循环遍历,将列表每个数据单次插入.相当于批量插入N条数据,进行了n次的数据库连接和插入操作. 底层有批量插入的方法,但是会有问题,所以已经停用,看下面实现是,取到一个数据库连接,来处理后面所有的插入操作.若这个列表ops所有的sql语句执行的数据库都是同一个的话,就没什么问题,若里面存在散库的情况,只要跟第一个不在同一个库的,都会执行失败. public void insertBatch(List<OpBatchUpdate>