在我们使用数据库的过程中,避免不了备份、恢复、导入、导出数据,方法比较多,根据不同的数据量选择不同的方法,会提高我们的工作效率,
(1)从表A导入数据到表B;一般涉及到表结构相同或者表结构不同等情况,数据量少的时候效率很高,
测试表A为 send_done,创建语句为下面内容,
1
2
3
4
5
6
7
8
9
10
11
|
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
|
1
2
3
4
5
6
7
8
9
10
11
|
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
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
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)
检查导出文件
[root@slave1 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
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)
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 |
|
+---------+-------------+--------------------------------+---------------------+-------+---------------------+---------------------+
注意:
load data infile 默认的列与列间的分隔符是制表符,当出现其他分割符时就会出现加载数据不匹配的情况。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#创建 user 表
CREATE TABLE ` user ` (
`username` varchar (10) DEFAULT NULL ,
`sex` tinyint(4) DEFAULT NULL ,
`birth` date DEFAULT NULL ,
`address` varchar (50) DEFAULT NULL ,
`phone` varchar (15) DEFAULT NULL ,
`email` varchar (50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
#相关的数据( select 或者outfile导出都可以)
winner 1 1993-11-25 甘肃西和县 18393354445 18393355445@163.com linux 1 1993-11-25 甘肃西和县 18393354445 18393355445@163.com linux 1 1993-11-27 上海松江 1839335442 1839335544@163.com linux 1 1993-11-25 甘肃西和县 18393354445 18393355445@163.com linux 1 1993-11-27 上海松江 1839335442 1839335544@163.com linux 1 1993-11-27 上海松江 1839335442 1839335544@163.com linux 1 1993-11-25 甘肃西和县 18393354445 18393355445@163.com linux 1 1993-11-27 上海松江 1839335442 1839335544@163.com linux 1 1993-11-27 上海松江 1839335442 1839335544@163.com linux 1 1993-11-27 上海松江 1839335442 1839335544@163.com docker 1 1993-11-27 上海松江 1839335442 1839ss5544@163.com 将分隔符换成逗号 ","
awk -F "\t" '{print $1","$2","$3","$4","$5","$6}' user .txt > user .awk
或者:sed "s/\t/,/g" user .txt > user .txt
winner,1,1993-11-25,甘肃西和县,18393354445,18393355445@163.com linux,1,1993-11-25,甘肃西和县,18393354445,18393355445@163.com linux,1,1993-11-27,上海松江,1839335442,1839335544@163.com linux,1,1993-11-25,甘肃西和县,18393354445,18393355445@163.com linux,1,1993-11-27,上海松江,1839335442,1839335544@163.com linux,1,1993-11-27,上海松江,1839335442,1839335544@163.com linux,1,1993-11-25,甘肃西和县,18393354445,18393355445@163.com linux,1,1993-11-27,上海松江,1839335442,1839335544@163.com linux,1,1993-11-27,上海松江,1839335442,1839335544@163.com linux,1,1993-11-27,上海松江,1839335442,1839335544@163.com docker,1,1993-11-27,上海松江,1839335442,1839ss5544@163.com 加载数据: mysql> LOAD DATA INFILE '/var/lib/mysql/Docker/user.awk' INTO TABLE user ;
Query OK, 11 rows affected, 66 warnings (0.05 sec)
Records: 11 Deleted: 0 Skipped: 0 Warnings: 66 mysql> select * from user ;
winner,1,1 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL 指定分隔符 LOAD DATA INFILE '/var/lib/mysql/Docker/user.awk' INTO TABLE user FIELDS TERMINATED BY ','
查看插入结果: linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| linux,1,19 | NULL | NULL | NULL | NULL | NULL |
| docker,1,1 | NULL | NULL | NULL | NULL | NULL |
| winner | 1 | 1993-11-25 | 甘肃西和县 | 18393354445 | 18393355445@163.com | | linux | 1 | 1993-11-25 | 甘肃西和县 | 18393354445 | 18393355445@163.com | | linux | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839335544@163.com | | linux | 1 | 1993-11-25 | 甘肃西和县 | 18393354445 | 18393355445@163.com | | linux | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839335544@163.com | | linux | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839335544@163.com | | linux | 1 | 1993-11-25 | 甘肃西和县 | 18393354445 | 18393355445@163.com | | linux | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839335544@163.com | | linux | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839335544@163.com | | linux | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839335544@163.com | | docker | 1 | 1993-11-27 | 上海松江 | 1839335442 | 1839ss5544@163.com |
方法3、 使用select 导出数据
mysql -u root -p -e "select * from wangjubao.send_done;" >/tmp/winner2.sql
检查数据
[root@slave1 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
处理第一行
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
使用load加载数据就可以了
方法4、利用CSV存储引擎导入数据
像nivcate之类的工具,我们都可以导入CSV,excel,txt等格式的数据,在研究完CSV存储引擎后,发现CSV存储引擎,可以直接向CSV文件导入到数据库中,CSV存储引擎的表,会在操作系统上存储.frm表结构定义信息,还有.CSV文件存储数据就是和普通的CSV没什么区别。我们可以手动的更改此文件。从而实现增删改。
实践
需要注意分隔符是英文逗号(,),先创建相关的表以及数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
CREATE TABLE `lvs` ( `id` int (11) NOT NULL ,
` name ` char (20) NOT NULL ,
`address` char (30) NOT NULL ,
`mail` char (30) NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8;
#数据文件
1, "百度" , "人工智能" , "18655@163.com"
2, "百度" , "测试" , "18655@163.com"
3, "腾讯" , "北京" , "18655@163.com"
4, "阿里巴巴" , "计算器" , "18655@163.com"
#检查改表相关的物理文件
-rw-rw ---- 1 mysql mysql 35 May 17 16:28 lvs.CSM # 报错表的状态和表中的数据
-rw-rw ---- 1 mysql mysql 0 May 17 16:28 lvs.CSV #数据文件
-rw-rw ---- 1 mysql mysql 8652 May 17 16:28 lvs.frm #表结构
[root@iZ23t094y03Z test]# cat lvs.csv #检查准备的数据文件 1, "百度" , "人工智能" , "18655@163.com"
2, "百度" , "测试" , "18655@163.com"
3, "腾讯" , "北京" , "18655@163.com"
4, "阿里巴巴" , "计算器" , "18655@163.com"
1, "百度" , "人工智能" , "18655@163.com"
2, "百度" , "测试" , "18655@163.com"
3, "腾讯" , "北京" , "18655@163.com"
4, "阿里巴巴" , "计算器" , "18655@163.com"
#将准备好的数据文件写入lvs.CSV文件 root@iZ23t094y03Z test]# cat lvs.csv >lvs.CSV #检查数据库 MariaDB [test]> select * from lvs;
+ ----+--------------+--------------+---------------+
| id | name | address | mail |
+ ----+--------------+--------------+---------------+
| 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | + ----+--------------+--------------+---------------+
再插入 cat lvs.csv >>lvs.CSV #这时更改数据、增加数据 可能不会立即生效 可以用以下命令
检查和修复。
MariaDB [test]> check table lvs;
+ ----------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+ ----------+-------+----------+----------+
| test.lvs | check | error | Corrupt |
+ ----------+-------+----------+----------+
1 row in set (0.00 sec)
MariaDB [test]> repair table lvs;
+ ----------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+ ----------+--------+----------+----------+
| test.lvs | repair | status | OK | + ----------+--------+----------+----------+
1 row in set (0.00 sec)
MariaDB [test]> select * from lvs;
+ ----+--------------+--------------+---------------+
| id | name | address | mail |
+ ----+--------------+--------------+---------------+
| 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | + ----+--------------+--------------+---------------+
16 rows in set (0.00 sec)
|
数据导入的时候需要注意字符集、分割付,中英文标点符号等,不然不能加载数据,check table lvs失败repair table lvs 修复时, 甚至可能清空整张表的数据。
方法5、复制相同表的数据
在mysql中我们可以将一张表复制到另一个库中,也可以复制相同的表结构和数据。
1、剪切某表到新的库
目前的test库中有lsv和lvs两张表,还有一个新的库csvtest,目前没有表,我们实现表的移动操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
MariaDB [test]> show tables; + ----------------+
| Tables_in_test | + ----------------+
| lsv | | lvs | MariaDB [test]> alter table lvs rename csvtest.lvs;
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> show tables; #执行完 + ----------------+
| Tables_in_test | + ----------------+
| lsv | + ----------------+
检查csvtest库 MariaDB [test]> use csvtest Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [csvtest]> show tables; + -------------------+
| Tables_in_csvtest | + -------------------+
| lvs | + -------------------+
1 row in set (0.00 sec)
MariaDB [csvtest]> select * from lvs;
+ ----+--------------+--------------+---------------+
| id | name | address | mail |
+ ----+--------------+--------------+---------------+
| 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | | 1 | 百度 | 人工智能 | 18655@163.com | | 2 | 百度 | 测试 | 18655@163.com | | 3 | 腾讯 | 北京 | 18655@163.com | | 4 | 阿里巴巴 | 计算器 | 18655@163.com | + ----+--------------+--------------+---------------+
16 rows in set (0.00 sec)
真的全部移动到此啊,我们在检查一下物理文件有什么变化呢 [root@iZ23t094y03Z csvtest]# pwd /var/lib/mysql/csvtest [root@iZ23t094y03Z csvtest]# ls db.opt lvs.CSM lvs.CSV lvs.frm #再看看原来的目录 [root@iZ23t094y03Z csvtest]# cd ../test/ [root@iZ23t094y03Z test]# ll total 24 -rw-rw ---- 1 mysql mysql 35 May 17 15:13 lsv.CSM
-rw-rw ---- 1 mysql mysql 159 May 17 15:13 lsv.CSV
-rw-rw ---- 1 mysql mysql 8652 May 17 15:03 lsv.frm
|
这个SQL真的很强大,在物理上和逻辑上都进行了移动。真心的强大啊。
方法2 创建表(复制表)迁移数据
除了上面的方法,我们还可以使用创建表的方式复制表结构和表中的数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
MariaDB [csvtest]> create table lvs2 engine = innodb as select * from csvtest.lvs;
Query OK, 16 rows affected ( 0.04 sec)
Records: 16 Duplicates: 0 Warnings: 0
MariaDB [csvtest]> show tables; + - - - - - - - - - - - - - - - - - - - +
| Tables_in_csvtest | + - - - - - - - - - - - - - - - - - - - +
| lvs | | lvs2 | + - - - - - - - - - - - - - - - - - - - +
2 rows in set ( 0.00 sec)
MariaDB [csvtest]> ; ERROR: No query specified MariaDB [csvtest]> select * from lvs2;
+ - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - +
| id | name | address | mail |
+ - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - +
| 1 | 百度 | 人工智能 | 18655 @ 163.com |
| 2 | 百度 | 测试 | 18655 @ 163.com |
| 3 | 腾讯 | 北京 | 18655 @ 163.com |
| 4 | 阿里巴巴 | 计算器 | 18655 @ 163.com |
| 1 | 百度 | 人工智能 | 18655 @ 163.com |
| 2 | 百度 | 测试 | 18655 @ 163.com |
| 3 | 腾讯 | 北京 | 18655 @ 163.com |
| 4 | 阿里巴巴 | 计算器 | 18655 @ 163.com |
| 1 | 百度 | 人工智能 | 18655 @ 163.com |
| 2 | 百度 | 测试 | 18655 @ 163.com |
| 3 | 腾讯 | 北京 | 18655 @ 163.com |
| 4 | 阿里巴巴 | 计算器 | 18655 @ 163.com |
| 1 | 百度 | 人工智能 | 18655 @ 163.com |
| 2 | 百度 | 测试 | 18655 @ 163.com |
| 3 | 腾讯 | 北京 | 18655 @ 163.com |
| 4 | 阿里巴巴 | 计算器 | 18655 @ 163.com |
+ - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - +
16 rows in set ( 0.00 sec)
|
mysqlimport 导入导出数据
导入导出数据的方式特别多,除了我们上述的几种外,还有一个mysqlimport可以将文件导入到数据库中。可以从各种格式的文本文件中加载表。 文本文件名称必须是应该使用的表的名称。如果使用套接字连接到MySQL服务器,则服务器将直接打开并读取文本文件。 在其他情况下,客户端将打开文本文件。 SQL命令“LOAD DATA INFILE”用于导入行。
mysqlimport -u root -p123123 Docker --default-character-set=utf8 --fields-terminated-by=, user.awk #指定分割符
mysqlimport常用参数
--default-character-set=utf8
-d --delete 导入数据前 会先删除 会删除表中的所有数据
-f --force 如果遇见错误 仍然要继续执行
-i --ignore 如果插入记录中发现有重复值 那么这条记录不做处理
-r --replace 如果插入记录中发现有重复值 则覆盖旧记录
-L --local 从执行命令客户端读取文件 默认从服务端对应的路径下读取文件
-s --silent 导入数据 不输出操作结果
--ignore-lines= 跳过文件的前多少行
--user-threads= 并行加载数据 多线程 加载数据
--fields-terminated-by= 指定分割符
--fiedes-enclosed-by= 指定用于包括住列值的符号 对于字符列 或者中间包括列分隔符情景比较适用 例如分隔符中为, 内容中有逗号。
其实mysqlimport和load data 原理是一样的,所以支持的参数什么都是一样的,主要的区别就是mysqlimport是一种接口的形式
随着使用MYSQL越来越多,也慢慢的发现了其中很多让人惊讶的地方,功能真的非常的强悍。继续努力吧!
本文转自 tianya1993 51CTO博客,原文链接:http://blog.51cto.com/dreamlinux/1899822,如需转载请自行联系原作者