如何使用psql -F设置制表符分隔符

Jam*_*est 27 postgresql

我想使用psql -F将选择查询转储到制表符分隔的文本文件.但是,这不起作用:

psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
Run Code Online (Sandbox Code Playgroud)

这使得分隔符成为字面值.如何让它使用真正的标签呢?

fba*_*ber 40

我想你只需要使用文字标签.这是如何工作取决于你的shell.你看过这篇文章吗?

在bash shell中,你可以这样做$'\t'.

使用您问题中的示例:

psql -Umyuser mydb -AF $'\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!那个线程有帮助.我用它来运行`psql -Umyuser mydb -F $'\ t' - no-align -c"select*from mytable"-o/tmp/dumpfile.txt` (3认同)
  • 我还必须添加“-A”,以强制输出未对齐。这可能已成为较新的 psql 版本的要求。 (3认同)

Eme*_*ski 8

在Unix中,您也可以输入

ctrl-V tab
Run Code Online (Sandbox Code Playgroud)

ctrl-V告诉终端不要解释下一个键.

这也适用于回车符(^ M)和许多其他特殊键,如箭头键


Kam*_*arz 6

如果有人在交互式shell中查找如何执行此操作: \f '\t'