如何将MySQL查询结果存储到本地CSV文件中?

joe*_*joe 22 mysql

如何将MySQL查询结果存储到本地CSV文件中?我无法访问远程计算机.

tma*_*hal 56

您将不得不使用命令行执行'-e'标志.

$> /usr/local/mysql/bin/mysql -u user -p -h remote.example.com -e "select t1.a,t1.b from db_schema.table1 t1 limit 10;" > hello.txt
Run Code Online (Sandbox Code Playgroud)

将使用查询的输出在当前工作目录中生成本地hello.txt文件.

  • 如果将查询保存到文件,可以将其更改为:$>/usr/local/mysql/bin/mysql -u user -p -h remote.example.com <infile.sql> hello.txt (5认同)
  • CSV是一般规范,它不仅适用于逗号分隔文件.每个csv软件库和电子表格程序都可以处理不同的分隔符和不同的转义序列. (3认同)
  • 适合所有用例的一个! (2认同)
  • 到目前为止的最佳答案,但生成制表符分隔文件,而不是OP要求的CSV. (2认同)

cod*_*ict -24

你可以尝试这样做:

SELECT a,b,c
FROM table_name
INTO OUTFILE '/tmp/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)

我们在这里使用OUTFILE子句将输出存储到 CSV 文件中。
我们将字段括在双引号中以处理其中包含逗号的字段值,并用逗号分隔字段并使用换行符分隔单独的行。

  • 不确定这是如何解决的,因为问题具体询问如何保存到本地文件,而 INTO OUTFILE 将文件保存在远程数据库服务器上。 (29认同)
  • 如果假设我无权访问远程计算机来存储生成的文件 (3认同)
  • 我认为这根本不是一个解决方案。问题特别指出,数据必须保存在本地,而不是远程。此外,这是来自mysql文档(http://dev.mysql.com/doc/refman/5.1/en/select-into.html):如果您想在服务器主机以外的其他主机上创建结果文件,通常不能使用 SELECT ... INTO OUTFILE,因为无法写入相对于服务器主机文件系统的文件路径。 (3认同)