不使用"INTO INFILE"从远程服务器将MySQL表导出到.tsv

T. *_*nes 4 mysql command-line-interface tsv

我在Amazon RDS实例上有一个非常大的表,我需要将其导出为具有特定设置的.tsv.我无法INTO OUTFILE在RDS实例上使用.所以我必须将表导出到我登录到RDS MySQL实例的服务器的本地驱动器上.

我有特定的设置我需要为.tsv指定.他们是:

  1. 以\ t结束
  2. 没有任何东西
  3. 用反斜杠逃脱
  4. 空值为空

我如何从命令行执行此操作?

Hit*_*dra 7

你可以这样做-

mysql -uroot -proot -h "mysql.host.url" -N -B -e "select * from world.city" | sed 's/NULL/ /g' > test.tsv
Run Code Online (Sandbox Code Playgroud)

-N告诉它不要打印列标题.-B是"批处理模式",并使用选项卡分隔字段.NULL由空格替换.

对于100 GB的数据库,这可能有助于 -

 mysql -uroot -proot -h "mysql.host.url" -N -B -e "select * from world.city" > test.tsv
 sed 's/NULL/ /g' < test.tsv > new.tsv
Run Code Online (Sandbox Code Playgroud)

但我建议对于大型数据库,您应该使用ETL工具.