36

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

psql -Umyuser mydb -F '\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt

这使得分隔符成为文字 \t。我如何让它使用真正的标签?

4

3 回答 3

50

我认为您只需要使用文字标签即可。这如何工作取决于您的外壳。你看过这个帖子吗?

在 bash shell 中,您可以使用$'\t'.

使用您问题中的示例:

psql -Umyuser mydb -AF $'\t' --no-align -c "select * from mytable" -o /tmp/dumpfile.txt

来自man bash

$'string' 形式的单词被特殊处理。该单词扩展为字符串,并按照 ANSI C 标准的规定替换反斜杠转义字符。[...] 扩展结果是单引号的,就好像美元符号不存在一样。

于 2012-04-25T12:54:19.137 回答
10

在 Unix 中,您还可以键入

ctrl-V tab

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

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

于 2015-02-07T20:17:06.313 回答
7

如果有人在交互式外壳中寻找如何做到这一点: \f '\t'

于 2017-04-21T08:05:47.740 回答