========================================================================
【【 数据库 03day 】】
数据导入,导出
数据导入:把系统文件的内容存储到数据库的表里。
把文件的内容存储到数据库的表里,对这个文件是有要求的 ,有规律的 有一定的格式。
步骤:
1.创建一个存储文件内容的表,(这个表 的字段,什么类型的 约束 是根据你要存储数据文件内容的而建的)
2.执行导入数据的sql命令 (格式一定要记住)
3. 在mysql 5.7这个版本的这个软件里面 它在导入数据的时候 它要求系统文件必须在默认的导入数据的路径下才可以,5.7之前的版本是没有这个要求的。
show variables like "secure_file_priv"; (看一下mysql的变量variables 像 。。。。)
设置搜索路径
• 查看默认使用目录及目录是否存在
mysql> show variables like "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.01 sec)
### 如果你想把系统文件 存储到数据库表里;首先你要先把那个文件拷贝到 /var/lib/mysql-files/ 路径下 才可以 默认时候你装软件包的时候,路径已经创建好了! 这个路径目录是可以修改的。
----------------------------
数据导入
• 基本用法
– LOAD DATA INFILE “ 目录名 / 文件名”
INTO TABLE 表名
FIELDS TERMINATED BY “ 分隔符”
LINES TERMINATED BY “\n”;
• 注意事项
– 字段分隔符要与文件内的一致
– 指定导入文件的绝对路径
– 导入数据的表字段类型要与文件字段匹配
– 禁用 SElinux
## 示例演示::--->> 把/etc/passwd 导入到数据库中
1 ## 把需要导入数据库 的文件 拷贝到 指定的路径下!
[root@host50 mysql-files]# ls /etc/passwd
/etc/passwd
[root@host50 mysql-files]# head /etc/passwd ## 看一下这个文件的规律, 每一行都是7列 都是用: 号分隔的! 每一行就像表中的一条记录。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@host50 mysql-files]#
[root@host50 mysql-files]# pwd
/var/lib/mysql-files
[root@host50 mysql-files]# cp /etc/passwd ./ ## 把目标文件拷贝到 该路径下!!
[root@host50 mysql-files]# head -2 passwd ## 看一下文件内容的格式,及相关的规律!
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@host50 mysql-files]#
2## 建表!!
mysql> use db1;
Database changed
mysql> ##: 根据passwd内容创建一个表
mysql> create table user(
-> name char(30),
-> password char(1),
-> uid smallint(2),
-> gid smallint(2),
-> comment char(100),
-> homedir char(150),
-> shell char(50),
-> index(name)
-> );
Query OK, 0 rows affected (0.39 sec)
mysql> show create table user; ## 查看一下创建表的