我的应用程序运行在服务器1上,数据库在服务器2上。我想将select查询的输出作为CSV文件获取到服务器1,即我的应用程序服务器。我该如何实现这一目标? 使用Select into outfile不能帮助我,因为它只会在本地服务器上导出文件,所以如果我在DB服务器上运行查询,它会在DB服务器上创建文件,而不是应用程序服务器上。 mysql -e选项也无法帮助,因为它不会以CSV格式进行导出。 有人能建议如何直接从远程服务器上创建本地CSV文件吗? 谢谢。
我的应用程序运行在服务器1上,数据库在服务器2上。我想将select查询的输出作为CSV文件获取到服务器1,即我的应用程序服务器。我该如何实现这一目标? 使用Select into outfile不能帮助我,因为它只会在本地服务器上导出文件,所以如果我在DB服务器上运行查询,它会在DB服务器上创建文件,而不是应用程序服务器上。 mysql -e选项也无法帮助,因为它不会以CSV格式进行导出。 有人能建议如何直接从远程服务器上创建本地CSV文件吗? 谢谢。
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
-h
连接到远程服务器,如果您使用典型的SELECT... INTO OUTFILE
方法,仍会将文件写入远程数据库服务器。 - mltsy在Linux上,新版本的MySQL客户端(已测试14.14)在将stdout重定向到文件时默认使用制表符分隔符:
mysql -h serverhostname -uuserid -ppassword databasename -e 'select * from mytbale order by update_ts desc' >output.tsv
大多数接受csv格式的应用程序也会接受tsv格式,或者您可以轻松地自己进行转换,请参见如何将.tsv转换为.csv?。