我想使用 psql -F 将选择查询转储到制表符分隔的文本文件中。但是,这不起作用:
psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
这使得分隔符成为文字 \t。我如何让它使用真正的标签?
我想使用 psql -F 将选择查询转储到制表符分隔的文本文件中。但是,这不起作用:
psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
这使得分隔符成为文字 \t。我如何让它使用真正的标签?
我认为您只需要使用文字标签即可。这如何工作取决于您的外壳。你看过这个帖子吗?
在 bash shell 中,您可以使用$'\t'
.
使用您问题中的示例:
psql -Umyuser mydb -AF $'\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt
来自man bash
:
$'string' 形式的单词被特殊处理。该单词扩展为字符串,并按照 ANSI C 标准的规定替换反斜杠转义字符。[...] 扩展结果是单引号的,就好像美元符号不存在一样。
在 Unix 中,您还可以键入
ctrl-V tab
ctrl-V 告诉终端不要解释下一个键。
这也适用于回车 (^M) 和许多其他特殊键,如箭头键
如果有人在交互式外壳中寻找如何做到这一点:
\f '\t'