Mysql的导入导出数据
MySql 导入和导出数据导出数据将数据导出到输出文件将数据导出到转储文件 导入数据使用MySQL实用程序使用mysqlimportMySql 导入和导出数据
导出数据
从mysql中导出数据到别的文件将数据导出到输出文件
关键字into outfile将查询结果写入文本文件。
-- 标准语法select (列) from (表) into outfile '文件url';-- 例如将电影表的所有数据都存储在C盘下的MYSQL Server 8.0文件....中 -- 文件名字为film_details.txtselect * from filminto outfile 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/film_details.txt';
默认的每个字段由制表符终止 每一行由换行符终止
文件输出如下:
但是我们可以修改 使用特定字符作为字段和每一行的分隔
列与列之间的分隔格式设置
使用关键字fields
terminated by设置每一列之间的间隔字符enclosed by设置每一列字段之前和之后的字符escaped by值对文件中任何特殊字符进行转义
行与行之间的分隔格式设置
使用lines
starting by标识每一行开始的字符terminated by标识每一行结束的字符
/*例如列与列之间以,分隔 并且每一列以“开始和结束*/select * from film into outfile '..url.../film_details1.txt' fields terminated by ',' enclosed by '"';
-- 行与行之间的 以*开始 以$$结束select * from film into outfile '..url../film_details2.txt'lines starting by '*' terminated by '$$';
将数据导出到转储文件
将文件或者图像文件等二进制的数据导出到单独的文档
使用关键字into dumpfile
/*例如将照片导出到转储文件*/select picture from Staff where Staff_ID=1 into dumpfile '..url../Uploads/pic.png';
于是可以在文件中看到
导入数据
从别的文件中导入数据到数据库提供了两个使用程序可以从各种文件格式导入数据 MysqlMysqlimport使用MySQL实用程序
Load Data: 可以直接从带有分隔符的文本文件中导入数据库
/*语法*/load data infile 'url' into table (表名)/*例如 要将文件film_details4中的数据导入表film1中*/-- 将本地文件数据导入新创建的表中load data infile '..url../film_details4.txt' into table film1;-- 然后就可以在film1中看到这个文档中的数据select * from film1;
注意:文件中列的数量应该和插入的表列相对应。否则会插入失败
source: 可通过从mysql命令提示符执行sql文件储存的sql语句 将数据导入mysql表
可以用于将大量的数据导入数据库。跨机器建立数据库
先打开mysql命令行客户端 然后执行下列语句
source 文件名
执行source:
可以直接在mysql命令行查看表
mysql:可直接从系统操作命令提示符执行mysql命令
ctrl+r 打开系统的命令提示框 输入cmd
-- 1.先进入C:\Program Files\MySQL\MySQL Server 8.0\bin目录-- 2.在cmd命令行里输入以下命令-- mysql -h localhost -u mysqlUser名字 -p 数据库名 < "..path...\XX.sql"
执行如下:
使用mysqlimport
实质上load data语句的命令行版本
必须要在命令提示符处使用命令
必须指定数据库 路径 和文件名
-- 1.进入C:\Program Files\MySQL\MySQL Server 8.0\bin目录-- 2.在cmd命令行里输入以下命令 -- mysqlimport -u username -p 数据库名字 "..path..\film_details.txt"
有一些option可以指定如何导入数据的导入选项
--columns=列1, 列2
:规定了导入到那一列--delete
导入数据前移除表中的记录--fields-enclosed-by=''
指用于文本文件中每列之前之后的字符--ignore-lines=P
读取文件时忽略前P行--replace
如果现在记录中包含主键或者unique的列中有相同值,则用新纪录更换以前记录
执行如下: