7

我的应用程序在服务器 1 上运行,数据库在服务器 2 上。我想将选择查询的输出作为 CSV 格式发送到服务器 1,即我的应用程序服务器。我怎样才能做到这一点。选择到 outfile 将无济于事,因为它仅在本地服务器上转储,因此如果我在数据库服务器上运行查询,它将在其上创建文件,而不是在应用程序服务器上创建文件。mysql -e 选项也没有帮助,因为它不会转储为 CSV。谁能建议如何从远程服务器直接在本地创建文件作为 CSV?谢谢。

4

2 回答 2

13

您可以使用outfile然后将文件 ftp 到本地主机或将正常查询的结果传递给某些 sed/awk 以将其转换为 csv?

我发现的是: mysql -umysqlusername -pmysqlpass databasename -B -e "select * from \`tablename\`;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > mysql_exported_table.csv

除此之外,我们将使用 (s)ftp 解决方案。

于 2013-05-30T11:42:07.317 回答
2

将标准输出重定向到文件时,Linux 上较新版本的 MySQL 客户端(在 14.14 上测试)默认使用制表符分隔符:

mysql -h serverhostname -uuserid -ppassword databasename -e 'select * from mytbale order by update_ts desc' >output.tsv

大多数接受 csv 的应用程序都会接受 tsv,或者您应该能够自己轻松转换,请参阅如何将 .tsv 转换为 .csv?.

于 2019-12-20T15:33:34.687 回答