数据库原理与应用 第 10 章 · 上机三
课程第 10 章上机三 先问路导一份出来被拦下来按课件那句写同名再导一次灌回去分隔符写错连起来 版式
第 10 章 数据库备份还原和日志管理 · 上机三

导出和导入文件

七道题把表导成文本再灌回去,1290 和 1086 两个报错都要亲手撞到。
已完成 0 / 7
本 次 上 机 题 目
  1. 01服务器只许往一个文件夹里写
  2. 02SELECT 后面接 INTO OUTFILE
  3. 03导到 D 盘会被服务器拦下来
  4. 04分隔符和引号都指定一遍
  5. 05导出文件不许覆盖
  6. 06LOAD DATA 把文件读回表里
  7. 07少写一组选项就全乱了
  8. 导出、清空、导回,核对行数
01
第 10 章 · 上机三

服务器只许往一个文件夹里写

show 一下 secure_file_priv,把那个路径记下来。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

这个变量是启动时定死的,改它要动配置文件再重启,改不动就迁就它。

想一想

为什么 MySQL 要限制往哪儿写文件?

02
第 10 章 · 上机三

SELECT 后面接 INTO OUTFILE

查出来的行不打在屏幕上,直接写成一个文本文件。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

默认用制表符隔开,一行一条,没有表头也没有建表语句。

知道更多

这跟 mysqldump 导出来的完全是两回事,那份里有 CREATE 和 INSERT。

03
第 10 章 · 上机三

导到 D 盘会被服务器拦下来

路径不在 secure_file_priv 那个文件夹里,一律不许写。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

1290 不是语句写错了,是路径不对,换个文件夹就成。

练一练

碰到 1290 最省事的做法是?
  1. A改配置文件再重启
  2. B把文件导到变量指的那个文件夹
  3. C换个用户
答案 B

改配置要重启服务,上机时先迁就它。

04
第 10 章 · 上机三

分隔符和引号都指定一遍

字段之间用逗号,字符串用双引号括起来。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

OPTIONALLY 的意思是数字不用括,只括字符串,所以年龄那一列是光的。

记牢它两组选项

  1. FIELDS 管字段之间
  2. LINES 管行之间
05
第 10 章 · 上机三

导出文件不许覆盖

同一个文件名再导一遍,直接报 1086。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

服务器不许覆盖已有的导出文件,换个名字或者先把旧的删掉。

想一想

这条规矩防的是什么?

06
第 10 章 · 上机三

LOAD DATA 把文件读回表里

先把 s 表清空,再从刚才那个文件读回来。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

导出时怎么写的分隔符,导入时就得原样再写一遍。

知道更多

先删 sc 是因为它的外码引用了 s,父行被引用着删不掉。

07
第 10 章 · 上机三

少写一组选项就全乱了

同一个文件按默认的制表符去读,一行会被当成一整个字段。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

REPLACE 碰上重复主键就覆盖旧的,不写它碰上重复就报 1062。

分清楚两个关键字

写法碰到重复主键
REPLACE覆盖旧的
IGNORE跳过新的
第 10 章 · 上机三

导出、清空、导回,核对行数

一趟走完,前后两个数应该一模一样。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

导出和导入的 FIELDS 写法必须成对,这一趟才对得上。

想一想

sc 表里的选课记录还回得来吗?

保山学院·人工智能教研室·曹鼎鼎