我想逃避反斜杠,\b
以便以后可以正常处理它。到目前为止,我使用了一个返回制表符分隔结果的命令,该结果也将空值转换\N
为(对于 mysql load into
):
PGPASSWORD=$PASS psql -qtAX -U $USER -h $HOST -p $PORT -d $DB -AF $'\t' -P 'null=\N'
有任何想法吗?
我想逃避反斜杠,\b
以便以后可以正常处理它。到目前为止,我使用了一个返回制表符分隔结果的命令,该结果也将空值转换\N
为(对于 mysql load into
):
PGPASSWORD=$PASS psql -qtAX -U $USER -h $HOST -p $PORT -d $DB -AF $'\t' -P 'null=\N'
有任何想法吗?
如果我理解你的问题...
psql
提供用于格式化其输出的选项(例如,它如何分隔列和行、它如何呈现空值、是否包含页脚、是否仅呈现元组、是否使用其扩展格式呈现等);但是,我认为它不提供编码、转义或以其他方式处理行/字段级数据的选项,例如替换存储数据中的反斜杠。为了完成你似乎想要完成的事情,我相信你需要使用类似
replace
or的 SQL 函数regexp_replace
,或者需要对你的输出进行后处理(例如,使用sed
)。几个松散相关的想法:
\b
,因为它\b
通常表示反斜杠编码中的退格键。PGPASSWORD
(andPASS
) 的替代方法,因为它可能会将您的密码暴露给其他已知用户和其他用户(因为可以提取环境变量)。PGHOST
,PGPORT
,PGUSER
等可能值得一试,作为指定它们的可能替代方法psql
(这不是一个非常重要的想法,尽管您可能会感兴趣)。PS 感谢您发布您的问题......
psql
那里有很多很棒的选择。