• Win10使用mysqldump导出csv文件及期间遇到的问题


    作为测试,我们这里使用了名为testdb的数据库中的名为test_table的表,首先我们使用如下SQL来查看其中有何数据:

    select * from testdb.test_table
    

    数据如下:

    id name age point brief
    1 刘德华 23 96.12 我爱你亲爱的姑娘
    2 周杰伦 22 93.20 七里香
    3 0 0.00
    4 周润发 0 0.00 "有没有人曾告诉你"

    然后在命令行执行如下指令尝试导出CSV文件:

    mysqldump -uroot -p testdb test_table -t -T "D:/test/data/" --fields-enclosed-by="" --fields-terminated-by=","
    

    然后就看到报错了:

     SQL 错误 [1290] [HY000]: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    

    然后我们在MySQL命令行下执行:

    show variables like '%secure%'
    

    看到结果:

    Variable_name            |Value                                          |
    -------------------------|-----------------------------------------------|
    require_secure_transport |OFF                                            |
    secure_auth              |ON                                             |
    secure_file_priv         |C:ProgramDataMySQLMySQL Server 5.7Uploads |
    

    这里的secure_file_priv表示我们默认只能将导出的文件放到这个位置:C:ProgramDataMySQLMySQL Server 5.7Uploads

    我们这里尝试将C:ProgramDataMySQLMySQL Server 5.7目录下的my.ini文件进行如下修改:

    secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"
    

    这一行前面加一个# 改为:

    # secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"
    

    然后在命令行执行services.msc进入服务管理界面,重启mySQL5.7对应的服务。
    但是发现这样还是不行的。
    继续尝试将这一行取消掉注释,并改成:

    secure-file-priv=""
    

    然后重启MySQL服务。

    执行如下命令导出结果:

     mysqldump -uroot -p testdb test_table -t -T "D:/test/data/" --fields-enclosed-by="" --fields-terminated-by=","
    

    发现可以了,在D:/test/data/目录下生成了两个文件:

    • test_table.sql
    • test_table.txt

    test_table.sql内容为空,因为-t选项设置成了表结果不导出;
    test_table.txt内容如下:

    1\,刘德华\,23\,96.12\,我爱你亲爱的姑娘
    2\,周杰伦\,22\,93.20\,七里香
    3\,\,\,.00\,\
    4\,周润发\,\,.00\,"有没有人曾告诉你"
    
    

    这个时候发现好像哪里不对,哦,原来我双引号的地方没有填写好,暂时还不知道怎么办,所以尝试下面这种办法。

    我们可以执行如下SQL在MySQL命令行下导出数据:

    SELECT * INTO OUTFILE 'D:/test20181120.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '
    ' 
    FROM testdb.test_table;
    

    执行完SQL后,会在D盘根目录下生成一个名为test20181120.csv的文件,内容如下:

    1,"刘德华",23,96.12,"我爱你亲爱的姑娘"
    2,"周杰伦",22,93.20,"七里香"
    3,"",0,0.00,""
    4,"周润发",0,0.00,""有没有人曾告诉你""
    
    
  • 相关阅读:
    自动化测试过程中所入的坑3——解决问题思维的转换
    自动化测试所入的坑2
    js原生触发angular事件
    Selenium2Library源码中browser的传递
    Selenium自动化测试中的等待
    Android adb 命令学习笔记
    Robot学习笔记
    Xpath 与Css 定位方式的比较
    Selenium填坑笔记
    python批量更改文件名
  • 原文地址:https://www.cnblogs.com/zifeiy/p/9987500.html
Copyright © 2020-2023  润新知