【问题标题】:postgres copy path from full path with linux commandpostgres 使用 linux 命令从完整路径复制路径
【发布时间】:2018-12-02 14:22:27
【问题描述】:

我正在尝试从完整路径中获取路径并将其复制到新列中,但我很难管理引号。 我有一列带有“/volume2/test/here it is/my file.avi”,我想在另一列中复制“my file.avi” (我也想要这条路,但我会在之后检查) 有人可以帮忙吗?

/usr/bin/psql -U postgres video_metadata -q -A -t -c \"""SELECT RIGHT(path, POSITION('\' in REVERSE(path)) -1 ) from video_file;""\""

但我有这个错误

syntax error near unexpected token `('

如果我尝试一些更清洁的东西,比如

/usr/bin/psql -U postgres video_metadata -q -A -t -c "SELECT RIGHT(path, POSITION('\' in REVERSE(path)) -1 ) from video_file;"

我有这个错误

ERROR:  unterminated quoted string at or near "'\' in REVERSE(path)) -1 ) from video_file;"
LINE 1: SELECT RIGHT(path, POSITION('\' in REVERSE(path)) -1 ) from ...

【问题讨论】:

  • 有什么问题:psql -U postgres video_metadata -q -A -t -c "SELECT RIGHT(path, POSITION('\' in REVERSE(path)) -1 ) from video_file;"
  • 开头有3个双引号,结尾有4个,这就是问题所在。顺便说一句,你有什么特殊原因要在 Linux 控制台上转义双引号 \" 吗?
  • 为什么你的路径中有'\'?
  • 我有一列包含完整路径,例如“/volume2/test/here it is/my file.avi”,我想在另一列中复制“my file.avi”(对于片刻之后,我会尝试一下路径:D)
  • 使用此处的文档来解决(几乎)所有引用问题:stackoverflow.com/a/7820049/905902

标签: postgresql path copy quotes double-quotes


【解决方案1】:

我认为你的意思是:

 /usr/bin/psql -U postgres video_metadata -q -A -t -c "SELECT RIGHT(path, POSITION('\' in REVERSE(path)) -1 ) from video_file;"

【讨论】:

  • 我已经在原始帖子中回答过,但它失败了'\'
【解决方案2】:

发现....我混淆了 windows 路径.....它应该是 '/' 而不是 '\'

完整的命令是:

/usr/bin/psql -U postgres video_metadata -q -A -t -c "SELECT RIGHT(path, POSITION('/' in REVERSE(path)) -1 ) from video_file;"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2019-08-10
    • 2018-08-13
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多