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

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯云数据库团队的专栏

PostgreSQL 的 MVCC 机制解析

PostgreSQL 是通过 MVCC (Multi-Version Concurrency Control) 来保证事务的原子性和隔离性,本文通过一些事例对 ...

6720
来自专栏用户2442861的专栏

数据库经典问题

原文  http://blog.csdn.net/fangjian1204/article/details/39085941

1613
来自专栏禁心尽力

mybatis_开发篇

一、使用mybatis的动态代理方式开发 需求:这里以crm系统中分页条件查询所有的客户信息的功能为例? 1、创建工程 2、引入所需的jar包 3、引入日志文件...

1945
来自专栏Laoqi's Linux运维专列

Python访问数据库Mysql

5076
来自专栏我的博客

TP入门第十一天

1、数据库视图 视图通常是指数据库的视图,视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储...

3606
来自专栏Albert陈凯

SQL语句执行原理清空缓存的方法

文章转载:原文地址 原理: 第一步:应用程序把查询SQL语句发给服务器端执行。 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发...

3815
来自专栏乐沙弥的世界

MySQL 数据库简单操作

    对于想要从事或爱好mysql相关工作的童鞋们,有必要掌握在命令行下对mysql实现一些简单的操作。本文从描述了如何登录到mysql数据库服务器,如何在m...

1022
来自专栏一个会写诗的程序员的博客

mysql-8.0.11-winx64 安装配置: mysqld --initialize --console MYSQL:ERROR 1045 (28000): Access denied ...

mysql-8.0.11-winx64 安装配置: mysqld --initialize --console MYSQL:ERROR 1045 (28000...

2.6K1
来自专栏杨建荣的学习笔记

运维平台中RESTful的Token认证

在近期要做的RESTful服务API化的过程中,对于开放的API还是需要考虑基本的安全认证的,如果API能够随便被调用,可能对于功能来说是畅通的,如果调用...

1203
来自专栏james大数据架构

Access数据库多表连接查询

第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A、B、C,A关联B,B关联C,均用ID键...

2906

扫码关注云+社区

领取腾讯云代金券