mysql的数据导出几种方法
 

从网上找到一些问题是关于如何从MySQL中导出数据,以便用在本地或其它的数据库系统之上;以及 将现有数据导入MySQL数据库中。

数据导出

  数据导出主要有以下几种方法:

  使用select into outfile "filename"语句
  使用mysqldump实用程序
  使用select into outfile "filename"语句

  可以在mysql的命令行下或在php程序中执行它。我下面以在mysql命令行下为例。在php中使用时,将其改成相应的查询进行处理即可。不过在使用这个命令时,要求用户拥有file的权限。如我们有一个库为phptest,其中有一个表为driver。现在要把driver卸成文件。执行命令:

  mysql> use phptest;
  Database Changed
  mysql> select * from driver into outfile "a.txt";
  Query OK, 22 rows affected (0.05 sec)

  上面就可以完成将表driver从数据库中卸到a.txt文件中。注意文件名要加单引号。那么这个文件在哪呢?在mysql目录下有一个data目录,它即是数据库文件所放的地方。每个库在单独占一个子目录,所以phptest的目录为c:\mysql\data\phptest(注意:我的mysql安装在c:\mysql下)。好,现在我们进去,a.txt就是它。打开这个文件,可能是:

  1 Mika Hakinnen 1
  2 David Coulthard 1
  3 Michael Schumacher 2
  4 Rubens Barrichello 2
  ...
可能还有很多记录。每个字段之间是用制表符分开的(\t)。那么我们可以修改输出文件名的目录,以便放在指定的位置。如"a.txt"可以改成"./a.txt"或"/a.txt"。其中"./a.txt"放在c:\mysql\data目录下了,
而"/a.txt"文件则放在c:\目录下了。所以select命令认为的当前目录是数据库的存放目录,这里是
c:\mysql\data。

  使用select命令还可以指定卸出文件时,字段之间的分隔字符,转义字符,包括字符,及记录行分隔字符。列在下面:

  FIELDS
  TERMINATED BY "\t"
  [OPTIONALLY] ENCLOSED BY ""
  ESCAPED BY "\\"
  LINES
  TERMINATED BY "\n"

  TERMINATED 表示字段分隔

  [OPTIONALLY] ENCLOSED 表示字段用什么字符包括起来,如果使用了OPTIONALLY则只有CHAR和VERCHAR被包括ESCAPED 表示当需要转义时用什么作为转义字符LINES TERMINATED 表示每行记录之间用什么分隔

  上面列的是缺省值,而且这些项都是可选的,不选则使用缺省值。可以根据需要进行修改。给出一个例子如下:

  mysql> select * from driver into outfile "a.txt" fields terminated by "," enclosed by """;
  Query OK, 22 rows affected (0.06 sec)

  结果可能如下:

  "1","Mika","Hakinnen","1"
  "2","David","Coulthard","1"
  "3","Michael","Schumacher","2"
  "4","Rubens","Barrichello","2"
  ...

  可以看到每个字段都用","进行了分隔,且每个字段都用"""包括了起来。注意,行记录分隔符可以是一个字符串,请大家自行测试。不过,如果输出文件在指定目录下如果存在的话就会报错,先删除再测试即可。

  使用mysqldump实用程序

  从上面的select方法可以看出,输出的文件只有数据,而没有表结构。而且,一次只能处理一个表,要处理多个表则不是很容易的。不过可以将select命令写入一个sql 文件(复制文本应该是很容易的吧),然后在命令行下执行即可:mysql 库名
先来个最简单的吧:
mysqldump phptest > a.sql

  可能结果如下:

  # MySQL dump 7.1
  #
  # Host: localhost Database: phptest
  #--------------------------------------------------------
  # Server version 3.22.32-shareware-debug
  #
  # Table structure for table "driver"
  #
  CREATE TABLE driver (
  drv_id int(11) DEFAULT "0" NOT NULL auto_increment,
  drv_forename varchar(15) DEFAULT "" NOT NULL,
  drv_surname varchar(25) DEFAULT "" NOT NULL,
  drv_team int(11) DEFAULT "0" NOT NULL,
  PRIMARY KEY (drv_id)
  );
  #
  # Dumping data for table "driver"
  #

  INSERT INTO driver VALUES (1,"Mika","Hakinnen",1);
  INSERT INTO driver VALUES (2,"David","Coulthard",1);
  INSERT INTO driver VALUES (3,"Michael","Schumacher",2);
  INSERT INTO driver VALUES (4,"Rubens","Barrichello",2);
  ...

  如果有多表,则分别列在下面。可以看到这个文件是一个完整的sql文件,如果要将其导入到其它的数据库中可以通过命令行方式,很方便:mysql phptest < a.sql。如果将数据从本地传到服务器上,则可以将这个文件上传,然后在服务器通过命令行方式装入数据。

  如果只想卸出建表指令,则命令如下:

  mysqldump -d phptest > a.sql

  如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:

  mysqldump -t phptest > a.sql

  那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

  mysqldump -T./ phptest driver

  其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与
mysqldump同一目录。如果不指定driver表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

  对卸出的数据文件,也可以同select方法一样,指定字段分隔符,包括字符,转义字段,行记录分隔符。参数列在下面:

  --fields-terminated-by= 字段分隔符
  --fields-enclosed-by= 字段包括符
  --fields-optionally-enclosed-by= 字段包括符,只用在CHAR和VERCHAR字段上
  --fields-escaped-by= 转义字符
  --lines-terminated-by= 行记录分隔符
我想大家应该明白这些参数的意思了吧。一个例子如下:
  mysqldump -T./ --fields-terminated-by=, --fields-enclosed-by=\" phptest driver

  输出结果为:
  "1","Mika","Hakinnen","1"
  "2","David","Coulthard","1"
  "3","Michael","Schumacher","2"
  "4","Rubens","Barrichello","2"
  ...

  请注意字符的使用。

  小结

  以上为使用select和mysqldump实用程序来卸出文本的方法。select适合利用程序进行处理,而mysqldump则为手工操作,同时提供强大的导出功能,并且可以处理整个库,或库中指定的多表。大家可以根据需求自行决定使用。

  同时还有一些方法,如直接数据库文件拷贝也可以,但是移动后的数据库系统与原系统应一致才行。这里就不再提了。

  导入

  同导出相类似,导入也有两种方法:

  使用LOAD DATA INFILE "filename"命令
  使用mysqlimport实用程序
  使用sql文件

  由于前两个处理与导出处理相似,只不过是它们的逆操作,故只给出几种命令使用的例子,不再解释了,大家可以自行查阅手册。

  使用load命令:
  load data infile "driver.txt" into table driver fields terminated by "," enclosed by """;

  使用mysqlimport实用程序:
  mysqlimport --fields-terminated-by=, --fields-enclosed-by=\" phptest driver.txt

  对于第三种,则可以使用由mysqldump导出的sql文件,在命令行下执行mysql库名

专自:http://hi.baidu.com/breezedancer/blog/item/3020c21b4da2d8faae5133e0.html

MYSQL数据库的导出的几种方法的更多相关文章

  1. MySQL数据库分表的3种方法

    原文地址:MySQL数据库分表的3种方法作者:dreamboycx 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目 ...

  2. 查询MySQL数据库中表结构的几种方法

    什么是表结构?表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名.字段类型.及宽度,并将这些数据输入到计算机当中. 查询方法:以表‘employees’为例子 1.describe(d ...

  3. 【MySQL】锁——查看当前数据库锁请求的三种方法 20

    MySQL提供了查看当前数据库锁请求的三种方法:1. show  full  processlist命令  观察state和info列 2. show engine  innodb status\G ...

  4. mysql myisam转innodb的2种方法

      mysql myisam转innodb的2种方法 mysql中的myisam和innodb有什么区别.一个好比便利店,一个好比大型购物中心,他们是为了适应不同的场合而存在的.当流量比较小,我们可以 ...

  5. MYSQL数据库导入导出(可以跨平台)

    MYSQL数据库导入导出.sql文件 转载地址:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html 本人总结:直接复制数据库, ...

  6. 关于php读mysql数据库时出现乱码的解决方法

    关于php读mysql数据库时出现乱码的解决方法 php读mysql时,有以下几个地方涉及到了字符集. 1.建立数据库表时指定数据库表的字符集.例如 create table tablename ( ...

  7. Oracle 数据库分页查询的三种方法

    一.Oracle 数据库分页查询的三种方法 1.简介 不能对 rownum 使用 >(大于或等于 1 的数值).>=(大于 1 的数值).=(不等于 1 的数值),否则无结果.所以直接用 ...

  8. mysql 中添加索引的三种方法

    原文:http://www.andyqian.com/2016/04/06/database/mysqleindex/ 在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以 ...

  9. [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)

    /// <summary>/// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库/// 1.首先在在项目中引用SQLDMO.DLL文件./// 2.在引用中的SQLDMO.D ...

随机推荐

  1. Android onConfigurationChanged 不执行

    自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变. 所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetS ...

  2. [Android Studio] Android Studio中查看类的继承关系

    转载自:http://blog.csdn.net/hyr83960944/article/details/38098091 查看类的继承关系的快捷键F4,在Android Studio常用快捷键这篇文 ...

  3. HTML:基本的标签

    概述: <html></html>标准的语言格式,回环标签,有头和躯体部分,头里面一般显示标题title,躯体部分显示内容:背景色.文字.图片.超链接.表格.表单等. 可以直接 ...

  4. WinForm特效:同时让两个窗体有激活效果

    windows api,一个窗体激活的时候给另外一个发消息 using System; using System.Windows.Forms; using System.Runtime.Interop ...

  5. Thinkphp学习笔记-编辑工具Sublime license

    选择[help]-[enter license]   直接输入注册码就可以了 ----- BEGIN LICENSE ----- Andrew Weber Single User License EA ...

  6. (剑指Offer)面试题50:树中两个结点的最低公共祖先

    题目: 求树中两个结点的最低公共祖先 思路: 考虑一下几种情况: 1.该树为二叉搜索树 二叉搜索树是排序树,位于左子树点的结点都比父结点小,而位于右子树的结点都比父结点大,只需要从树的根结点开始和两个 ...

  7. auto_ptr

    1. int *pi = new int(1024); delete pi; // 释放pi指向的int对象占用的内存空间 pi = 0; // 将pi设置为0,不指向任何东西,为Null 注意:删除 ...

  8. 微信小程序 - 输入起点、终点获取距离并且进行路线规划(腾讯地图)

    更新: 2018-9-19 腾讯官方经纬度转详细地址,详细地址转经纬度 index.wxml <!--地图容器--> <map id="myMap" style= ...

  9. 【转】TCP(协议号6)的方方面面

    转:http://blog.sina.com.cn/s/blog_6002b97001018fxh.html 第一:TCP连接的建立(也就是所谓的三次握手)过程. 第一次握手:建立连接时,客户端发送s ...

  10. VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2

    原地址:http://zengwu3915.blog.163.com/blog/static/278348972013117114742496/ 所需软件1.VMware Workstation Bu ...