【问题标题】:Export a csv file from mysql to a local machine将 csv 文件从 mysql 导出到本地计算机
【发布时间】:2017-05-21 08:41:35
【问题描述】:

我正在使用通过 ssh 访问的远程服务器。 在服务器上有一个 mysql 数据库,我正在从中进行查询

SELECT * FROM my_table where date >  '2010-01-01'';

到目前为止一切顺利,当我托盘创建输出文件时会出现问题:

SELECT * FROM my_table where date >  '2010-01-01'  INTO OUTFILE '/home/ubuntu/data/my_output.csv';

我收到权限错误:

ERROR 1 (HY000): Can't create/write to file '/home/ubuntu/data/my_output.csv' (Errcode: 13)

有没有办法将文件直接发送到我的本地机器,而不是先在我无权从数据库写入文件的服务器上写入?

【问题讨论】:

  • 是否有任何地方可以写入,也许是临时目录?
  • @TimBiegeleisen 谢谢,这确实有效。我仍然对将其直接发送到本地机器的选项感兴趣

标签: mysql csv ssh


【解决方案1】:

您可以通过 ssh 隧道连接 mysql 端口(在服务器上)。

通过隧道传输服务器端口的 ssh 连接示例(在 ubuntu 上的 .ssh/config 文件中):

Host my_mysql_server
Hostname mysql_host_server
Port ssh_port
LocalForward 3307 localhost:3306
User ssh_user

终端示例:

ssh -L 3307:localhost:3306 ... (hostname, ...)

您可以将3307更改为您想要的任何端口(应该是尚未使用的端口)。

然后您可以在本地计算机上进行导出。将您的 sql 查询放入 sql 文件(例如:my_query.sql)并通过终端(ubuntu)中的以下命令将其导出:

mysql -h localhost -P 3307 your_database_name -u mysql_user -p < my_query.sql > export.csv

【讨论】:

  • 这真的不可能是答案。根本不是在鄙视你,我在鄙视 MySQL。这是一件很荒谬的事情……
猜你喜欢
  • 2017-12-30
  • 2021-08-24
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2018-08-29
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多