我的应用程序在服务器1上运行,数据库在服务器2上运行。我希望将select查询的输出作为CSV输出到服务器1,即我的应用程序服务器。如何实现这一点。 select into outfile不会有帮助,因为它只在本地服务器上转储,所以如果我在DB服务器上运行查询,它将在其上创建文件而不是应用程序服务器。 mysql -e选项也提供帮助,因为它不会转储为CSV。 任何人都可以建议如何从远程服务器本地直接创建文件作为CSV? 感谢。
答案 0 :(得分:9)
您可以使用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解决方案。
答案 1 :(得分:0)
在Linux上,较新版本的MySQL客户端(在14.14上测试)在将stdout重定向到文件时默认情况下使用制表符分隔符:
mysql -h serverhostname -uuserid -ppassword databasename -e 'select * from mytbale order by update_ts desc' >output.tsv
大多数接受CSV的应用程序都将接受tsv,否则您应该可以自己轻松转换,请参见How do I convert a .tsv to .csv?。