第33章 MySQL 导出数据教程

MySQL中陛下可以使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上。


使用 SELECT … INTO OUTFILE 语句导出数据

以下实例中咱们将数据表 liulianjiangcsdn_tbl 数据导出到 /tmp/liulianjiangcsdn.txt 文件中:


    mysql> SELECT * FROM liulianjiangcsdn_tbl 
        -> INTO OUTFILE '/tmp/liulianjiangcsdn.txt';

陛下可以通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式:


    mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/liulianjiangcsdn.txt'
        -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
        -> LINES TERMINATED BY '\r\n';

在下面的例子中,生成一个文件,各值用逗号隔开。这种格式可以被许多程序使用。


    SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM test_table;

SELECT … INTO OUTFILE 语句有以下属性:

  • LOAD DATA INFILE是SELECT … INTO OUTFILE的逆操作,SELECT句法。为了将一个database的数据写入一个文件,使用SELECT … INTO OUTFILE,为了将文件读回database,使用LOAD DATA INFILE。
  • SELECT…INTO OUTFILE 'file_name’形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到server 主机上,因此仁兄必须拥有FILE权限,才能使用此语法。
  • 输出不能是一个已存在的文件。防止文件数据被篡改。
  • 陛下需要有一个登陆server 的账号来检索文件。否则 SELECT … INTO OUTFILE 不会起任何作用。
  • 在UNIX中,该文件被创建后是可读的,权限由MySQLserver 所拥有。这意味着,虽然陛下就可以读取该文件,但可能无法将其删除。

导出表作为原始数据

mysqldump 是 mysql 用于转存储database的实用程序。它主要产生一个 SQL 脚本,其中包含从头重新创建database所必需的命令 CREATE TABLE INSERT 等。

使用 mysqldump 导出数据需要使用 --tab 选项来指定导出文件指定的目录,该目标必须是可写的。

以下实例将数据表 liulianjiangcsdn_tbl 导出到 /tmp 目录中:


    $ mysqldump -u root -p --no-create-info \
                --tab=/tmp liulianjiangcsdn liulianjiangcsdn_tbl
    password ******


导出 SQL 格式的数据

导出 SQL 格式的数据到指定文件,如下所示:


    $ mysqldump -u root -p liulianjiangcsdn liulianjiangcsdn_tbl > dump.txt
    password ******

以上命令创建的文件内容如下:


    -- MySQL dump 8.23
    --
    -- Host: localhost    Database: liulianjiangcsdn
    ---------------------------------------------------------
    -- Server version       3.23.58
    
    --
    -- Table structure for table `liulianjiangcsdn_tbl`
    --
    
    CREATE TABLE liulianjiangcsdn_tbl (
      liulianjiangcsdn_id int(11) NOT NULL auto_increment,
      liulianjiangcsdn_title varchar(100) NOT NULL default '',
      liulianjiangcsdn_author varchar(40) NOT NULL default '',
      submission_date date default NULL,
      PRIMARY KEY  (liulianjiangcsdn_id),
      UNIQUE KEY AUTHOR_INDEX (liulianjiangcsdn_author)
    ) TYPE=MyISAM;
    
    --
    -- Dumping data for table `liulianjiangcsdn_tbl`
    --
    
    INSERT INTO liulianjiangcsdn_tbl 
           VALUES (1,'Learn PHP','John Poul','2007-05-24');
    INSERT INTO liulianjiangcsdn_tbl 
           VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
    INSERT INTO liulianjiangcsdn_tbl 
           VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');

如果陛下需要导出整个database的数据,可以使用以下命令:


    $ mysqldump -u root -p liulianjiangcsdn > database_dump.txt
    password ******

如果需要备份所有database,可以使用以下命令:


    $ mysqldump -u root -p --all-databases > database_dump.txt
    password ******

–all-databases 选项在 MySQL 3.23.12 及以后版本加入。

该方法可用于实现database的备份策略。


将数据表及database拷贝至其他主机

如果陛下需要将数据拷贝至其他的 MySQL server 上, 陛下可以在 mysqldump 命令中指定database name及数据表。

在源主机上执行以下命令,将数据备份至 dump.txt 文件中:


    $ mysqldump -u root -p database_name table_name > dump.txt
    password *****

如果完整备份database,则无需使用特定的表名称。

如果陛下需要将备份的database导入到MySQLserver 中,可以使用以下命令,使用以下命令陛下需要确认database已经创建:


    $ mysql -u root -p database_name < dump.txt
    password *****

陛下也可以使用以下命令将导出的数据直接导入到远程的server 上,但请确保两台server 是相通的,是可以相互访问的:


    $ mysqldump -u root -p database_name \
           | mysql -h other-host.com database_name

以上命令中使用了管道来将导出的数据导入到指定的远程主机上。

本专栏所有文章

第1章 MySQL 教程第2章 MySQL 安装教程
第3章 MySQL 管理教程第4章 MySQL PHP 语法教程
第5章 MySQL 连接教程第6章 MySQL 创建数据库教程
第7章 MySQL 删除数据库教程第8章 MySQL 选择数据库教程
第9章 MySQL 数据类型教程第10章 MySQL 创建数据表教程
第11章 MySQL 删除数据表教程第12章 MySQL 插入数据教程
第13章 MySQL 查询数据教程第14章 MySQL WHERE 子句教程
第15章 MySQL UPDATE 更新教程第16章 MySQL DELETE 语句教程
第17章 MySQL LIKE 子句教程第18章 MySQL UNION教程
第19章 MySQL 排序教程第20章 MySQL 分组教程
第21章 MySQL 连接的使用教程第22章 MySQL NULL 值处理教程
第23章 MySQL 正则表达式教程第24章 MySQL 事务教程
第25章 MySQL ALTER命令教程第26章 MySQL 索引教程
第27章 MySQL 临时表教程第28章 MySQL 复制表教程
第29章 MySQL 元数据教程第30章 MySQL 序列使用教程
第31章 MySQL 处理重复数据教程第32章 MySQL 及 SQL 注入教程
第33章 MySQL 导出数据教程第34章 MySQL 导入数据教程
第35章 MySQL 函数教程第36章 MySQL 运算符教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 人生的意义不在于拿一手好牌,而在于打好一手坏牌。早安。
  • 我毕生的理想,就是找个高高大大的男生,他就那么随便一帅,我就那么随便一赖。然后岁月流逝,我们手拉着手,磨磨蹭蹭地变老。
  • 幸福,从没捷径,也没有完美无瑕,心态不同,人生的境遇便会天差地别。其实人生有很多东西无所谓最好的,只要你认为值得。成功与失败,幸福与不幸在各自的心里定义都不会相同。
  • 真山水之川谷,远望以取其势,近看以取其质。宏观取大势,微观取实质。
  • 恋爱的时候会盲目对方说什么好,你也会认为是好,其实是不够冷静,感情这东西最易扰乱我,因此我是不适合谈恋爱的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值