0
点赞
收藏
分享

微信扫一扫

mysql -- 数据导入导出以及表的复制

花姐的职场人生 2022-04-13 阅读 61
mysql

数据导入:

作用:文件系统的内容导入到数据库中

方式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

注意:

  1. 导出的内容由SQL查询语句决定
  2. 执行导出命令时路径必须指定在对应的数据库目录下

表的复制

  1. 表能根据实际需求复制数据
  2. 复制表时不会把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)
举报

相关推荐

0 条评论