如何将MySQL查询输出保存到excel或.txt文件?

rɑː*_*dʒɑ 112 mysql excel

如何将MySQL查询的输出保存到MS Excel表?

即使只能将数据存储在.txt文件中,也没关系.

Ama*_*ian 186

将MySQL查询结果保存到文本或CSV文件中:

MySQL提供了一种简单的机制,用于将select语句的结果写入服务器上的文本文件.使用INTO OUTFILE命名法的扩展选项,可以创建逗号分隔值(CSV),可以将其导入电子表格应用程序(如OpenOffice或Excel)或任何其他接受CSV格式数据的应用程序.

给出诸如的查询

SELECT order_id,product_name,qty FROM orders
Run Code Online (Sandbox Code Playgroud)

返回三列数据,结果可以使用查询放入文件/tmp/orders.txt:

SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.txt'
Run Code Online (Sandbox Code Playgroud)

这将创建一个制表符分隔文件,每行都在自己的行上.要更改此行为,可以向查询添加修饰符:

SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)

在此示例中,每个字段将用双引号括起来,字段将用逗号分隔,每行将在换行符(\n)分隔的新行上输出.此命令的示例输出如下所示:

"1","Tech-Recipes sock puppet","14.95" "2","Tech-Recipes chef's hat","18.95"
Run Code Online (Sandbox Code Playgroud)

请记住,输出文件必须不存在,并且用户MySQL正在运行,因为它具有对MySQL尝试将文件写入的目录的写权限.

句法

   SELECT Your_Column_Name
    FROM Your_Table_Name
    INTO OUTFILE 'Filename.csv'
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试通过客户端获取输出:

您可以尝试从本地客户端执行查询,并将输出重定向到本地文件目标:

mysql -user -pass -e "select cols from table where cols not null" > /tmp/output
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您收到此错误:`ERROR 1290(HY000):MySQL服务器正在运行--secure-file-priv选项,因此它无法执行此语句`,您仍然可以在`/中保存文件var/lib/mysql-files /`(Debian)之后将其移动到您想要的位置. (9认同)
  • 请务必注意,这会在服务器中创建文件.正如select into的文档解释的那样,你必须使用mysql命令作为mysql -e"select ...".http://dev.mysql.com/doc/refman/5.7/en/select-into.html (3认同)
  • 在您是客户端的大多数情况下,这不起作用,并且在客户端无法以任何方式访问的服务器计算机上创建该文件.我投了这个答案. (3认同)

Cha*_*ens 7

您可以编写以下代码来完成此任务:

SELECT ... FROM ... WHERE ... 
INTO OUTFILE 'textfile.csv'
FIELDS TERMINATED BY '|'
Run Code Online (Sandbox Code Playgroud)

它将结果导出为CSV,然后将其导出到Excel工作表.

  • 得到错误代码:1045访问被拒绝 (6认同)
  • @user2568374 您的 mysql 用户无权在您指定的文件夹中写入内容。您可以直接从命令行运行它: mysql -u USER -pPASSWORD -e "select ... from database.table where ..." > desired/file.txt (2认同)