MySql数据库·数据批量处理
2023-02-02 本文已影响0人
技术老男孩
一、定义:
- 主要分为2个部分:导入数据、导出数据
- 导入数据:一次性向表里存储多行数据
- 导出数据:一次性把表里的多行数据都取出来
二、MySql检索路径:
查看默认的检索目录:
- 数据导入或导出时,存放数据的文件必须在mysql服务要求的目录下
- 安装数据库服务软件时,会自动创建检索目录
/var/lib/mysql-files/
mysql> show variables like "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.01 sec)
自定义检索目录:
- 可以自定义创建检索目录
- 自定义创建的检索目录的父目录必须是mysql用户对其有r-x权限
# 修改mysql配置文件,重新设定检索慕课
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
# 手动添加该行,重新定义检索目录
secure_file_priv=/myload
:wq
# 创建自定义检索目录
[root@host50 ~]# mkdir /myload
# 修改属主为mysql用户
[root@host50 ~]# chown mysql /myload/
[root@host50 ~]# setenforce 0
# 重启mysql服务生效配置
[root@host50 ~]# systemctl restart mysqld
# 数据库管理员登录后查看
mysql> show variables like "secure_file_priv";
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| secure_file_priv | /myload/ |
+------------------+----------+
1 row in set (0.00 sec)
三、MySql数据导入导出命令:
数据导入:
- 把系统文件的内容存储到数据库服务的表里
- 文件内容务必要规律整齐
mysql> load data infile "/检索目录/文件名" into table 库名.表名
fields terminated by "文件中列的间隔符号"
lines terminated by "\n"; # 文件中行的结束符号,一般都为“\n”
数据导出:
- 把数据库服务的表里数据保存到系统文件里,需要注意的是导出的数据不包括表头名 ,只有表里的行。
- 导出的数据由select查询命令决定存放数据的文件名,不需要事先创建且具有唯一
# 数据导出命令格式1
mysql> select 字段名列表 from 库.表 [where 条件]
into outfile "/检索目录/文件名" ;
# 数据导出命令格式2
# fields terminated by:文件中的列的间隔符号,不指定默认是一个 tab 键的宽度
mysql> select 字段名列表 from 库.表 [where 条件]
into outfile "/检索命令名/文件名"
fields terminated by "符号";
# 数据导出命令格式3
# lines terminated by:文件中行间隔符号,不指定默认一条记录就是文件中的1行
mysql> select 字段名列表 from 库.表 [where 条件]
into outfile "/检索命令名/文件名"
fields terminated by "符号"
lines terminated by "符号";
四、数据导入操作步骤:
- 建库
- 建表:根据导入文件的内容创建(表头名 表头个数 ),根据文件内容定义确定表头所使用的数据类型
- 把系统文件拷贝的检索目录里
- 导入数据
- 查看表记录
实操(将/etc/passwd文件导入db1库的t3表里)
第一步:创建库
- 创建db1库
# 创建db1库
mysql> create database if not exists db1;
第二步:建表
- 创建db1.t3表
mysql> create table db1.t3(
name varchar(50) ,
password char(1) ,
uid int ,
gid int ,
comment varchar(200) ,
homedir varchar(60) ,
shell varchar(30)
);
- 查看表头
mysql> desc db1.t3;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name | char(50) | YES | | NULL | | # 用户名
| password | char(1) | YES | | NULL | | # 密码
| uid | int(11) | YES | | NULL | | # UID号
| gid | int(11) | YES | | NULL | | # GID号
| comment | varchar(200) | YES | | NULL | | # 用户说明信息
| homedir | varchar(60) | YES | | NULL | | # 用户家目录
| shell | varchar(30) | YES | | NULL | | # 解释器
+----------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
第三步:把系统文件拷贝的检索目录里
- 拷贝文件到自定义的检索目录
- 在mysql环境中,使用system + 命令,执行Linux环境的语句
mysql> system cp /etc/passwd /myload/
第四步:导入数据
mysql> load data infile "/myload/passwd" into table db1.t3
fields terminated by ":"
lines terminated by "\n" ;
第五步:查看表记录
mysql> select * from db1.t3;
+----+------+----------+-----+-----+---------+---------+-----------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+------+----------+-----+-----+---------+---------+-------+
| 1 | root | x | 0 | 0 | root | /root | /bin/bash |
...
| 22 | mysql| x | 27 | 27 | MySQL | /var/lib/mysql | /bin/false |
+----+------+----------+-----+-----+---------+----------------+------------+
22 rows in set (0.00 sec)