数据导入:
作用:文件系统的内容导入到数据库中
方式1:
语法:
load data infile "文件名"
into table 表名
field terminated by "分隔符"
lines terminated by "\n"
示例:将data.csv文件导入到数据库的表中:
[root@bjAli mysql]# cat data.csv
1,张三,99,15921852571,blu001
2,李四,91,15921852572,blu002
3,王五,92,15921852573,blu001
4,赵六,93,15921852574,blu002
5,李雷,94,15921852575,blu001
6,韩梅梅,95,15921852576,blu002
7,Lucy,96,15921852577,blu001
8,Lily,97,15921852578,blu002
9,Kite,98,15921852579,blu001
1、将data.csv放到数据库搜索路径中
mysql> show variables like 'secure_file_priv';
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.00 sec)
mysql> quit
Bye
[root@bjAli mysql]# cp data.csv /var/lib/mysql-files/
2、创建导入数据的数据库以及数据表:
mysql> create database dbtest;
Query OK, 1 row affected (0.00 sec)
mysql> use dbtest;
Database changed
mysql> create table stuinfo(
-> id int primary key auto_increment,
-> name varchar(30),
-> score float,
-> phone char(11),
-> class char(6))engine=innodb charset=utf8mb4;
Query OK, 0 rows affected (0.03 sec)
3、执行数据导入语句:
mysql> load data infile '/var/lib/mysql-files/data.csv'
mysql> into table stuinfo
mysql> fields terminated by ','
mysql> lines terminated by '\n';
Query OK, 9 rows affected (0.01 sec)
Records: 9 Deleted: 0 Skipped: 0 Warnings: 0
5、查看数据是否导入到指定的表中:
mysql> select * from stuinfo;
+----+-----------+-------+-------------+--------+
| id | name | score | phone | class |
+----+-----------+-------+-------------+--------+
| 1 | 张三 | 99 | 15921852571 | blu001 |
| 2 | 李四 | 91 | 15921852572 | blu002 |
| 3 | 王五 | 92 | 15921852573 | blu001 |
| 4 | 赵六 | 93 | 15921852574 | blu002 |
| 5 | 李雷 | 94 | 15921852575 | blu001 |
| 6 | 韩梅梅 | 95 | 15921852576 | blu002 |
| 7 | Lucy | 96 | 15921852577 | blu001 |
| 8 | Lily | 97 | 15921852578 | blu002 |
| 9 | Kite | 98 | 15921852579 | blu001 |
+----+-----------+-------+-------------+--------+
9 rows in set (0.00 sec)
方式2
语法:
在mysql终端:mysql> source xxx.sql
示例:
准备一个数据文件:data.sql
[root@bjAli mysql]# cat data.sql
INSERT INTO stuinfo (id,name,score,phone,class) VALUES
(1,'张三',99,'15921852571','blu001'),
(2,'李四',91,'15921852572','blu002'),
(3,'王五',92,'15921852573','blu001'),
(4,'赵六',93,'15921852574','blu002'),
(5,'李雷',94,'15921852575','blu001'),
(6,'韩梅梅',95,'15921852576','blu002'),
(7,'Lucy',96,'15921852577','blu001'),
(8,'Lily',97,'15921852578','blu002'),
(9,'Kite',98,'15921852579','blu001');
mysql> delete from stuinfo;
Query OK, 9 rows affected (0.01 sec)
mysql> select * from stuinfo;
Empty set (0.00 sec)
mysql> source data.sql // 向数据表中导入数据
Query OK, 9 rows affected (0.01 sec)
Records: 9 Duplicates: 0 Warnings: 0
mysql> select * from stuinfo;
+----+-----------+-------+-------------+--------+
| id | name | score | phone | class |
+----+-----------+-------+-------------+--------+
| 1 | 张三 | 99 | 15921852571 | blu001 |
| 2 | 李四 | 91 | 15921852572 | blu002 |
| 3 | 王五 | 92 | 15921852573 | blu001 |
| 4 | 赵六 | 93 | 15921852574 | blu002 |
| 5 | 李雷 | 94 | 15921852575 | blu001 |
| 6 | 韩梅梅 | 95 | 15921852576 | blu002 |
| 7 | Lucy | 96 | 15921852577 | blu001 |
| 8 | Lily | 97 | 15921852578 | blu002 |
| 9 | Kite | 98 | 15921852579 | blu001 |
+----+-----------+-------+-------------+--------+
9 rows in set (0.00 sec)
数据导出:
作用:将数据库中表的记录保存到系统文件里。
语法格式:
select ... from 表名
into outfile "文件名"
fields terminated by "分隔符"
lines terminated by "分隔符";
示例:
将stuinfo表中name,score和phone导出,字段间用,分隔,行之间用'\n'分隔:
mysql> select name,score,phone from stuinfo
mysql> into outfile '/var/lib/mysql-files/stuinfo.csv'
mysql> fields terminated by ','
mysql> lines terminated by '\n';
Query OK, 9 rows affected (0.00 sec)
查看导出文件/var/lib/mysql-files/stuinfo.csv:
[root@bjAli mysql]# cd /var/lib/mysql-files/
[root@bjAli mysql-files]# ls
data.csv stuinfo.csv
[root@bjAli mysql-files]# cat stuinfo.csv
张三,99,15921852571
李四,91,15921852572
王五,92,15921852573
赵六,93,15921852574
李雷,94,15921852575
韩梅梅,95,15921852576
Lucy,96,15921852577
Lily,97,15921852578
Kite,98,15921852579
注意:
- 导出的内容由SQL查询语句决定
- 执行导出命令时路径必须指定在对应的数据库目录下
表的复制
- 表能根据实际需求复制数据
- 复制表时不会把KEY属性复制过来
create table 表名 select 查询命令;
示例:
1、复制stuinfo表中全部记录和字段到stuinfo2
mysql> create table stuinfo2
-> select * from stuinfo;
Query OK, 9 rows affected (0.05 sec)
Records: 9 Duplicates: 0 Warnings: 0
mysql> select * from stuinfo2;
+----+-----------+-------+-------------+--------+
| id | name | score | phone | class |
+----+-----------+-------+-------------+--------+
| 1 | 张三 | 99 | 15921852571 | blu001 |
| 2 | 李四 | 91 | 15921852572 | blu002 |
| 3 | 王五 | 92 | 15921852573 | blu001 |
| 4 | 赵六 | 93 | 15921852574 | blu002 |
| 5 | 李雷 | 94 | 15921852575 | blu001 |
| 6 | 韩梅梅 | 95 | 15921852576 | blu002 |
| 7 | Lucy | 96 | 15921852577 | blu001 |
| 8 | Lily | 97 | 15921852578 | blu002 |
| 9 | Kite | 98 | 15921852579 | blu001 |
+----+-----------+-------+-------------+--------+
9 rows in set (0.00 sec)
2、复制stuinfo表的name,score和phone字段的前3条记录组成的表:
mysql> create table stuinfo3
-> select name,score,phone from stuinfo
-> order by id limit 3;
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from stuinfo3;
+--------+-------+-------------+
| name | score | phone |
+--------+-------+-------------+
| 张三 | 99 | 15921852571 |
| 李四 | 91 | 15921852572 |
| 王五 | 92 | 15921852573 |
+--------+-------+-------------+
3 rows in set (0.00 sec)
3、复制表结构:
mysql> create table stuinfo4 select * from stuinfo where false;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc stuinfo4;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | NO | | 0 | |
| name | varchar(30) | YES | | NULL | |
| score | float | YES | | NULL | |
| phone | char(11) | YES | | NULL | |
| class | char(6) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> select * from stuinfo4;
Empty set (0.00 sec)