【问题标题】:how to save mysql query output to a file named (currentTime).csv如何将 mysql 查询输出保存到名为 (currentTime).csv 的文件中
【发布时间】:2015-05-30 18:13:56
【问题描述】:

我正在尝试将 mysql 查询的输出存储到文件中。我需要一个扩展名为 .csv 的文件,它的名称应该是我电脑的当前时间,例如:2015-03-26 19:26:13.065000.csv。
当我执行这个查询时

conn=mysql.connector.connect(user='root',password='',host='localhost',database='ER_PC_NK')    
exe2 = conn.cursor()       
exe2.execute("""SELECT tbl_site.Site_name, State_Code, Country_Code,Street_Address, instrum_start_date, instrum_end_date, Comment INTO OUTFILE  'myrecord.csv' FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n' FROM tbl_site JOIN tbl_site_monit_invent ON site_id = tbl_Site_site_id""")

第一次它保存了一个名为 myrecord.csv 的文件,但第二次不是。在互联网上经过长时间搜索后,我发现它无法覆盖文件 myrecord.csv,所以我决定将文件命名为 currentTime.csv,以这样做我想尝试这种事情:

    ss=DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s');

    SET @t1=1
    set @FOLDER = 'c:/tmp/';
    SET @PREFIX = 'orders';
    SET @EXT    = '.csv';

    SET @CMD = CONCAT("SELECT * FROM orders INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT,
        "' FIELDS ENCLOSED BY '\"' TERMINATED BY ';' ESCAPED BY '\"'",
        "  LINES TERMINATED BY '\r\n';");

    PREPARE statement FROM @CMD

但发现错误:未定义用户定义的变量,在我使用 MySQL Connector Python v2.0.3 for python v2.7 时再次搜索并找到 user defined variables are available from Connector/NET version 5.2.2

我很困惑,如果您有更好的解决方案,请告诉。你的努力会有很大的帮助。谢谢。

【问题讨论】:

    标签: python-2.7 csv mysql-workbench mysql-connector-python


    【解决方案1】:

    你可以做的不是用户定义的变量

    import datetime
    conn = mysql.connector.connect(user='root',password='',host='localhost',database='ER_PC_NK')    
    exe2 = conn.cursor()       
    exe2.execute(
       """SELECT tbl_site.Site_name, State_Code, Country_Code,
          Street_Address, instrum_start_date, instrum_end_date,
          Comment INTO OUTFILE  %s FIELDS TERMINATED BY '|' OPTIONALLY
          ENCLOSED BY '"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n' 
          FROM tbl_site JOIN tbl_site_monit_invent ON site_id = tbl_Site_site_id
       """, (str(datetime.datetime.now()),))
    

    【讨论】:

    • 当我运行这个查询时,它给出了一个错误 DatabaseError: 1 (HY000): Can't create/write to file '2015-04-06 20:48:33.418000' (Errcode: 13 - 权限被拒绝)。我从dev.mysql.com/doc/refman/5.5/en/cannot-create.html 获得了帮助,但这无法解决,感谢您考虑我的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2015-02-01
    • 2015-05-25
    • 2014-08-19
    • 1970-01-01
    相关资源
    最近更新 更多