zoukankan      html  css  js  c++  java
  • 导出mysql数据库数据

    1.phpmyadmin导出

    SELECT `a`.`order_sn`,`a`.`member_id`,`c`.`job_number`,`a`.`shouhuo_name`,`a`.`shouhuo_moblie`,`a`.`shouhuo_tel` FROM ( SELECT * FROM `newerp_jifen_order` WHERE `shouhuo_time` > 0 AND `fahuo_time` > 0 AND `business_id` = 27 AND `add_time` > 1537804800 AND `shipping_status` = 3 ) AS `a` 
    LEFT JOIN ( SELECT * FROM `newerp_jifen_order_log` WHERE `content` = '客户确认收货' GROUP BY `order_id` ) `b` ON ( `a`.`order_id` = `b`.`order_id` )
    JOIN `newerp_member` AS `c` ON (`a`.`member_id` = `c`.`id`) WHERE `b`.`order_id` IS NULL

    以上只是一个示例,发现在phpmyadmin里面不能导出SQL (insert)

    原因:原来在phpmyadmin里面只能导出类似单表的SQL(insert)的文件。

    解决方案:在查询外面套用一个统一临时查询 SELECT 

    SELECT `t`.* FROM ( 

      SELECT `a`.`order_sn`,`a`.`member_id`,`c`.`job_number`,`a`.`shouhuo_name`,`a`.`shouhuo_moblie`,`a`.`shouhuo_tel` FROM ( SELECT * FROM `newerp_jifen_order` WHERE `shouhuo_time` > 0 AND `fahuo_time` > 0 AND `business_id` = 27 AND `add_time` > 1537804800 AND `shipping_status` = 3 ) AS `a`
      LEFT JOIN ( SELECT * FROM `newerp_jifen_order_log` WHERE `content` = '客户确认收货' GROUP BY `order_id` ) `b` ON ( `a`.`order_id` = `b`.`order_id` )
      JOIN `newerp_member` AS `c` ON (`a`.`member_id` = `c`.`id`) WHERE `b`.`order_id` IS NULL

    ) AS `t`

    这样就可以导出:

    导出之后,放入本地Navicat for MySQL工具中运行SQL,最终导出到Excel,最后发现Excel一些长的数字字符串会被转换为科学记数法,而且还是在后面补0,导致一些长数字字符串错误

    解决方案:

    SELECT CONCAT("'",`order_sn`) as `order_sn`,`member_id`,`job_number`,`shouhuo_name`,`shouhuo_moblie`,`shouhuo_tel` FROM `t`

    2. 直接mysqldump

    一.MYSQL的命令行模式的设置:
    桌面->我的电脑->属性->环境变量->新建->
    PATH=“;pathmysqlin;”其中path为MYSQL的安装路径。
    二.简单的介绍一下命令行进入MYSQL的方法:
    1.C:>mysql -h hostname -u username -p  .C:>mysql -h localhost -u root-p
    按ENTER键,等待然后输入密码。这里hostname为服务器的名称,如localhost,username为MYSQL的用户名,如root。
    进入命令行后可以直接操作MYSQL了。
    2.简单介绍一下MYSQL命令:
      mysql->CREATE DATABASE dbname;//创建数据库
      mysql->CREATE TABLE tablename;//创建表
      mysql->SHOW DATABASES;//显示数据库信息,有那些可用的数据库。
      mysql->USE dbname;//选择数据库
      mysql->SHOW TABLES;//显示表信息,有那些可用的表
      mysql->DESCRIBE tablename;//显示创建的表的信息
    三.从数据库导出数据库文件:
    1.将数据库mydb导出到e:mysqlmydb.sql文件中:
    打开开始->运行->输入cmd 进入命令行模式
    c:>mysqldump -h localhost -u root -p mydb >e:mysqlmydb.sql
    然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。
    2.将数据库mydb中的mytable导出到e:mysqlmytable.sql文件中:
    c:>mysqldump -h localhost -u root -p mydb mytable>e:mysqlmytable.sql
    3.将数据库mydb的结构导出到e:mysqlmydb_stru.sql文件中:
    c:>mysqldump -h localhost -u root -p mydb --add-drop-table >e:mysqlmydb_stru.sql
    四.从外部文件导入数据到数据库中:
    从e:mysqlmydb2.sql中将文件中的SQL语句导入数据库中:
    1.从命令行进入mysql,然后用命令CREATE DATABASE mydb2;创建数据库mydb2。
    2.退出mysql 可以输入命令exit;或者quit;
    3.在CMD中输入下列命令:
    c:>mysql -h localhost -u root -p mydb2 < e:mysqlmydb2.sql
    然后输入密码,就OK了。

    3.根据查询结果导出数据库数据

    引言

    最近在修改线上数据的时候,需要现将修改的数据继续备份,但是线上客户的服务器是不能直接连接,而是通过了一台堡垒机,这就说我们不能通过可视化客户端直接连接mysql的,所以所有的操作都是需要通过sql语句的,下面看一下导出的sql:

    mysql> select count(1) from table  into outfile '/tmp/test.xls';

    直接在我们查询的结果后面增加 into outfile '路径即可',但是在开始的时候我后面添加的路径不是 /tmp 而是/data 这样执行以后抛出下面的错误:

    The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

    这是因为mysql设置的权限,我们可以通过下面sql查看一下权限设置:

    show variables like '%secure%';

    导出的数据必须是这个值的指定路径才可以导出,默认有可能是NULL就代表禁止导出,所以需要设置一下;

    我们需要在/etc/mysql/mysql.conf.d/mysqld.cnf 文件的末尾进行设置,在末尾添加一句secure_file_priv="/"即可将数据导出到任意目录;

    secure_file_priv

      1、限制mysqld 不允许导入 | 导出

        secure_file_prive=null

      2、限制mysqld 的导入 | 导出 只能发生在/tmp/目录下

       secure_file_priv=/tmp/

      3、不对mysqld 的导入 | 导出做限制

              secure_file_priv 

           4、可以导出至任意目录

                secure_file_priv="/"

    这样设置以后我们就可以,实现我们一些自定义的的导出了!

  • 相关阅读:
    CUDA实例练习(十二):矩阵相乘
    CUDA实例练习(十一):零拷贝内存
    CUDA实例练习(十):多个cuda流
    CUDA实例练习(九):页锁定主机内存
    CUDA实例练习(八):原子操作(直方图)
    算法实例(三):快速排序
    算法实例(二):冒泡排序
    算法实例(一):简单桶排序
    CUDA实例练习(七):点积运算
    CUDA实例练习(六):矢量求和
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/9961948.html
Copyright © 2011-2022 走看看