如何将表从mysql数据库导出到excel?

Posted

技术标签:

【中文标题】如何将表从mysql数据库导出到excel?【英文标题】:How to export table to excel from mysql database? 【发布时间】:2014-04-08 08:00:37 【问题描述】:

我在 mysql 中有一个表,它对于超过 100k 行来说非常大,我想将它导出到 excel。但是,我在 phpmyadmin 上尝试了导出到 excel 功能,但转储 excel 文件需要很长时间。它甚至不是倾销。错误始终是“连接已重置”。有没有其他方法可以做到这一点??

【问题讨论】:

100,000 行需要 OfficeOpenXML 格式的 .xlsx 文件,或 BIFF 格式的 .xls 文件中的 2 个工作表,因为 xls 文件每个工作表最多可以有 65,536 行 用php读取所有行并使用它导出为ex​​cel文件github.com/PHPOffice/PHPExcel/blob/develop/Documentation/… 转储到 csv 文件。 @MarkBaker 实际上,我能够弄清楚一些事情并删除了一些行,现在它已经下降了 40k。我应该如何导出表格? 取决于您是否需要真正的 Excel 格式文件,或者 csv 文件是否足够 【参考方案1】:

首先,Excel 中的 10 万行听起来是个可怕的想法,当然这需要一段时间。这将需要一段时间才能打开。如果您必须这样做,请尝试:

SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

这应该会为您提供一个名为:/tmp/orders.csv 的文件,该文件将在 Excel 中打开。

【讨论】:

【参考方案2】:

导出缓慢可能是由于运行 phpmyadmin 的服务器所致。我经常以惊人的速度导出数百万行。

如果您可以访问数据库服务器的文件系统,这是一种非常快速的转换为 .csv 的方法,而 .csv 又可以被 Excel 打开。

SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

看到这个:http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/

【讨论】:

【参考方案3】:

我之前使用过OUTFILE 方法来执行此操作:

SELECT
    'First Name',
    'Last Name',
    'Email Address'
UNION
SELECT
    First_Name,
    Last_Name,
    Email
INTO OUTFILE
    '/tmp/data_2012-05-03.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
FROM
    `data`
WHERE
    Reg_Date >= '2012-05-02 00:00:00' AND
    Reg_Date <= '2012-05-02 23:59:59' AND
    Email_Status = 1;

【讨论】:

您好,感谢您的回复。我可以知道您在哪里执行此代码吗? 对不起,我不确定你的意思。

以上是关于如何将表从mysql数据库导出到excel?的主要内容,如果未能解决你的问题,请参考以下文章

使用c#将表从Sql Server导出到PDF文件

将表从 google bigquery 导出到 google 存储

将表从数据库导出到 csv 文件

如何将表从一个mysql数据库复制到另一个mysql数据库

无法将表从 BigQuery 导出到 Google Cloud Storage

使用 Golang API 将表从 Amazon RDS 导出到 csv 文件