【问题标题】:Exporting results of a Mysql query to excel?将Mysql查询的结果导出到excel?
【发布时间】:2012-04-24 09:31:30
【问题描述】:

我的要求是存储查询的全部结果

SELECT * FROM document 
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)

到 Excel 文件。

【问题讨论】:

  • 哼……有点含糊!任何技术、编程语言、约束、礼貌,code-style
  • 您可以使用Toad for MySQL (Freeware) 来实现。
  • @Priya,根据您的用例,另见官方MySQL for Excel
  • 您可以简单地使用按住 control 键并单击第一行,然后使用 control 键按住 shift 并继续滚动到最后一行并单击它。现在您正在选择所有可以右键单击然后复制行然后转到excel并粘贴的行。您也可以右键单击标题并复制列名
  • @shadysherif - 也许,但最好只是作为评论。例如,它有点假设某人正在使用 GUI - 问题或标签中未指定的东西。但取决于你!

标签: mysql excel export


【解决方案1】:

实现此目的的典型方法是导出为 CSV,然后将 CSV 加载到 Excel。
您可以使用任何 MySQL 命令行工具来执行此操作,方法是在您的 SELECT 语句中包含 INTO OUTFILE 子句:

SELECT ... FROM ... WHERE ... 
INTO OUTFILE 'file.csv'
FIELDS TERMINATED BY ','

有关详细选项,请参阅this link

或者,您可以使用 mysqldump 将转储存储为使用 --tab 选项的分隔值格式,请参阅this link.

mysqldump -u<user> -p<password> -h<host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult

提示:如果你没有指定绝对路径,而是使用INTO OUTFILE 'output.csv'INTO OUTFILE './output.csv' 之类的东西,它会将输出文件存储到show variables like 'datadir'; 指定的目录中。

【讨论】:

  • 我的专栏被驳回了请问这是什么问题?
  • 我在导入的 cvs 上看不到列名
  • 运行这个命令时这个 csv 文件到底在哪里创建的?
  • @ram 我猜是数据目录。但是,如果您想控制它,只需更改路径即可。
  • @RolandBouman 我尝试了同样的方法,但在我的生产服务器上,它说如下用户'User_name'@'localhost'的访问被拒绝(使用密码:是)请你帮我看看是什么我错了吗?
【解决方案2】:

如果您有连接或关闭位置,则可以在查询结束后编写它:

 select 'idPago','fecha','lead','idAlumno','idTipoPago','idGpo'
 union all
(select id_control_pagos, fecha, lead, id_alumno, id_concepto_pago, id_Gpo,id_Taller,
id_docente, Pagoimporte, NoFactura, FacturaImporte, Mensualidad_No, FormaPago,
Observaciones from control_pagos
into outfile 'c:\\data.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n');

【讨论】:

  • OP 指的是 Excel 文件而不是 CSV。
  • 这可能就是 graham.reeds 想要的。
【解决方案3】:

使用以下查询:

 SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ','  
 ENCLOSED BY '"' LINES TERMINATED BY '\n';

【讨论】:

    【解决方案4】:

    就我而言,我需要将 sql 结果转储到客户端的文件中。这是从数据库中卸载数据的最典型用例。在许多情况下,您无权访问服务器或不想将结果写入服务器。

    mysql -h hostname -u username -ppwd -e "mysql simple sql statement that last for less than a line" DATABASE_NAME > outputfile_on_the.client
    

    当您有一个持续多行的复杂查询时,就会出现问题;您不能使用命令行轻松地将结果转储到文件中。在这种情况下,您可以将复杂的查询放入一个文件中,例如 longquery_file.sql,然后执行该命令。

    mysql -h hn -u un -ppwd < longquery_file.sql DBNAME > output.txt
    

    这对我有用。我唯一的困难是制表符;有时我用于 group_cancat(foo SEPARATOR 0x09) 会写成 '\t' 在输出文件中。 0x09 字符是 ASCII 制表符。但是这个问题并不是我们将 sql 结果转储到文件的方式所特有的。它可能与我的寻呼机有关。当您找到此问题的答案时,请告诉我。我会更新这篇文章。

    【讨论】:

    • mysql -h hn -u un -p databasename &lt; sql_script.sql &gt; sql_output.tab 也可以使用
    【解决方案5】:

    我用来将mysql输出导出到文件的快速而肮脏的方法是

    $ mysql --tee=

    然后在我想要的任何地方使用导出的输出(您可以在&lt;file_path&gt; 中找到)。

    请注意,这是避免使用secure-file-priv 选项运行数据库的唯一方法,这会阻止使用先前答案中建议的INTO OUTFILE

    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    

    【讨论】:

      【解决方案6】:

      对于SHOW DATABASESSHOW TABLES

      INTO OUTFILE 不适用于 SHOW TABLESSHOW DATABASES 查询。

      在这种情况下,您可以这样做:

      1. SHOW DATABASES
      mysql -u <user> -p <password> -e 'SHOW DATABASES' > <path_to_file>
      
      1. SHOW TABLES
      mysql -u <user> -p <password> -e 'SHOW TABLES FROM <db_name>' > <path_to_file>
      

      提示:-e 标志代表execute

      参考文献:

      【讨论】:

        【解决方案7】:

        就我而言,INTO OUTFILE 不起作用,因为 MySQL 用户与登录用户不同。另外,由于我的查询很大,我不能使用内联变量。

        我最终使用了它,它变得容易多了。这可能不支持 CSV 或任一输出,但如果您需要按原样输出,这将起作用。

        mysql> tee /tmp/my.out;
        
        

        来源:https://alvinalexander.com/mysql/how-save-output-mysql-query-file/

        【讨论】:

          【解决方案8】:

          这是一个老问题,但它仍然是 Google 上的首批结果之一。最快的方法是使用 ODBC 查询或 MySQL For Excel 将 MySQL 直接链接到 Excel。后者在对 OP 的评论中被提及,但我觉得它确实值得拥有自己的答案,因为导出到 CSV 并不是实现这一目标的最有效方式。

          ODBC Queries - 设置起来有点复杂,但更灵活。例如,MySQL For Excel 加载项不允许您在查询表达式中使用 WHERE 子句。此方法的灵活性还允许您以更复杂的方式使用数据。

          MySQL For Excel - 如果您不需要对查询进行任何复杂的操作,或者如果您需要快速轻松地完成某些事情,请使用此插件。您可以在数据库中创建视图以解决一些查询限制。

          【讨论】:

          • excel 链接断开
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 2014-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多