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

时间:2015-05-15 00:49:50

标签: mysql command-line-interface tsv

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

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

  1. 以\ t
  2. 结束
  3. 无包装
  4. 以反斜杠逃脱
  5. 空值为空
  6. 如何从命令行执行此操作?

2 个答案:

答案 0 :(得分:7)

你可以这样做 -

mysql -uroot -proot -h "mysql.host.url" -N -B -e "select * from world.city" | sed 's/NULL/ /g' > test.tsv

-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

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

答案 1 :(得分:-1)