MySQL数据导入导出牛刀小试(r5笔记第3天)
最近学习了下MySQL中数据的导入导出,发现功能点真是丰富,很方便很快捷。
这些导入导出的方式还是有不少的细节的,在此先不做扩展和深入分析。
--数据导出 方式1
比如要实现数据的导出,直接可以指定生成的文件使用outfile即可。对于空值的处理是“N"
mysql> select * from test into outfile '/u02/mysql/dump/a.sql';
Query OK, 4 rows affected (0.00 sec)
1 aaaa
2 bbbb
3 c
4 N
--数据导出 方式2
如果需要导出某个数据库下的表结构和数据,使用mysqldump也是不错的选择。生成的文件中,.txt是对应的数据,.sql是对应的表结构sql。
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
| test1 |
+----------------+
2 rows in set (0.00 sec)
mysqldump -T /u02/mysql/dump -u root test
导出后查看目录结构。
[mysql@oel1 dump]$ ll
total 8
-rw-r--r-- 1 mysql dba 1338 Apr 11 22:39 test1.sql
-rw-rw-rw- 1 mysql dba 0 Apr 11 22:39 test1.txt
-rw-r--r-- 1 mysql dba 1364 Apr 11 22:39 test.sql
-rw-rw-rw- 1 mysql dba 0 Apr 11 22:39 test.txt
--数据导出 方式3
这种方式,直接把sql语句通过参数传入,确实很赞。注意这个时候生成的空值是NULL,而不是"N"
[mysql@oel1 dump]$ mysql -u root --execute="select *from test;" test > aa.sql
[mysql@oel1 dump]$ cat aa.sql
id name
1 aaaa
2 bbbb
3 c
4 NULL
[mysql@oel1 dump]$ cat ../a.sql
1 aaaa
2 bbbb
3 c
4 N
--数据导出 方式4
如果这个时候需要导出的表中列较多,可以通过键值对的方式纵向显示。可读性就大大增强了。比如下面的方式。
[mysql@oel1 dump]$ mysql -u root --vertical --execute="select *from test;" test > aa.sql
[mysql@oel1 dump]$ cat aa.sql
*************************** 1. row ***************************
id: 1
name: aaaa
*************************** 2. row ***************************
id: 2
name: bbbb
*************************** 3. row ***************************
id: 3
name: c
*************************** 4. row ***************************
id: 4
name: NULL
注意这个时候,我指定sql语句以”;"结尾,和不加结尾符的效果是一样的,可见这个时候还是有一定的健壮性。
[mysql@oel1 dump]$ mysql -u root --vertical --execute="select *from test" test > aa.sql
[mysql@oel1 dump]$ cat aa.sql
*************************** 1. row ***************************
id: 1
name: aaaa
*************************** 2. row ***************************
id: 2
name: bbbb
*************************** 3. row ***************************
id: 3
name: c
*************************** 4. row ***************************
id: 4
name: NULL
--数据导出 方式5
如果需要导出的数据为html格式,也很清晰。直接调用-html选项即可。
mysql -u root --html --execute="select *from test" test > aa.html
mysql@oel1 dump]$ cat aa.html
<TABLE BORDER=1><TR><TH>id</TH><TH>name</TH></TR><TR><TD>1</TD><TD>aaaa</TD></TR><TR><TD>2</TD><TD>bbbb</TD></TR><TR><TD>3</TD><TD>c</TD></TR><TR><TD>4</TD><TD>NULL</TD></TR></TABLE>[mysql@oel1 dump]$
--数据导出 方式6
如果指定导出数据格式为xml,直接调用-xml选项即可。
[mysql@oel1 dump]$ mysql -u root --xml --execute="select *from test" test > aa.html
[mysql@oel1 dump]$ cat aa.html
<?xml version="1.0"?>
<resultset statement="select *from test
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="id">1</field>
<field name="name">aaaa</field>
</row>
<row>
<field name="id">2</field>
<field name="name">bbbb</field>
</row>
<row>
<field name="id">3</field>
<field name="name">c</field>
</row>
<row>
<field name="id">4</field>
<field name="name" xsi:nil="true" />
</row>
</resultset>
--数据导出 方式7
如果希望把数据的结果缓存出来,使用-tee也是一种选择,这种方式会导出所有的操作结果,可以根据自己的需要来做导出。
mysql> tee a.log
Logging to file 'a.log'
mysql> select *from test;
Empty set (0.00 sec)
mysql> select *from test1;
Empty set (0.00 sec)
mysql> notee;
Outfile disabled.
这个时候会把sql和对应的数据结果都生成在日志里面。
--数据导入 方式1
数据的导入可以在mysql命令里面使用load data的方式来实现,也是比较轻巧的。
mysql> load data infile '/u02/mysql/dump/a.sql' into table test.test ;
Query OK, 4 rows affected (0.01 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select *from test;
+------+------+
| id | name |
+------+------+
| 1 | aaaa |
| 2 | bbbb |
| 3 | c |
| 4 | NULL |
| 1 | aaaa |
| 2 | bbbb |
| 3 | c |
| 4 | NULL |
+------+------+
8 rows in set (0.00 sec)
--数据导入 方式2
数据导入还可以使用mysqlimport来实现,比如我们需要导入的表为test,数据文件为test.txt
[mysql@oel1 dump]$ mysqlimport -u root test '/u02/mysql/dump/test.txt'
test.test: Records: 0 Deleted: 0 Skipped: 0 Warnings: 0
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 【排序】快速排序
- 因为BitMap,白白搭进去8台服务器...
- java所有的“锁”大总结,以后面试再也不怕遇到锁了
- 【Java8新特性】03 Stream流式数据处理
- 慎用JSON.stringify
- 【Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口
- ubuntu下的进程控制系统————Supervisor
- 如何高效、快速、准确地完成ML任务,这4个AutoML库了解一下
- [译]如何用 Typescript 写一个完整的 Vue 应用程序
- Docker上手系列:Docker入门hello world
- 前端应该知道的 HTTP 知识
- React 学习笔记(基础篇)
- 前端性能优化《一》——Chrome Performance 页面性能调试
- 【Vue 进阶】从 slot 到无渲染组件
- 一个合格的中级前端工程师应该掌握的 20 个 Vue 技巧