【问题标题】:Escape characters in teradata jdbc connection stringteradata jdbc 连接字符串中的转义字符
【发布时间】:2014-04-27 10:24:35
【问题描述】:

我的 teradata 数据库名称包含一个破折号 -。

搜索了网络,但徒劳无功。有人知道如何转义 jdbc 连接字符串中的特殊字符吗?字符串如下所示:

jdbc:teradata://HostName/DATABASE=Database-Name

当我使用此 url 创建连接时,我收到语法错误。还尝试将数据库参数放在单引号或双引号中,并用 { } 包围特殊字符。

感谢您的帮助!

【问题讨论】:

  • 尝试不使用数据库的连接字符串,并在创建连接后使用connection.setCatalog()

标签: jdbc teradata


【解决方案1】:

终于在这里找到了答案:https://jira.talendforge.org/browse/TDI-18863。正确的做法是将参数名称和值都用单引号括起来:

jdbc:teradata://HostName/'DATABASE=Database-Name'

更新:不,这不起作用,请参阅下面的评论。

【讨论】:

  • 嗯,没有。这不起作用。这只是忽略了数据库参数。
  • 您是否尝试用双引号将数据库名称括起来? jdbc:teradata://HostName/DATABASE="数据库名称"
【解决方案2】:

回答我自己的问题:

我的问题是我没有意识到我的数据库名称最后有一些尾随空格。

TeraDriver 使用单引号来转义空格和逗号。这意味着数据库名称应该用单引号括起来。如果没有单引号,空格和逗号被认为是参数值的结尾。如果数据库名称中有单引号,则应以两个单引号字符表示。

'Database-Name   '

单引号内的任何内容都将用于 sql 查询:“database Database-Name”。要转义 '-' 我们需要双引号。所以单引号和双引号都应该按正确的顺序使用:

"jdbc:teradata://HostName/DATABASE='\"Database-Name\"'"

【讨论】:

    【解决方案3】:

    您是否尝试过 \ 字符,它应该是 Java 中的转义字符?

    jdbc:teradata://HostName/DATABASE=Database\-Name
    

    【讨论】:

    • 不幸的是,它没有帮助。然后我收到此错误:语法错误:预期单词 'xxx' 和请求结尾之间的内容。
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 2011-06-04
    • 2011-04-22
    • 2021-05-02
    • 1970-01-01
    • 2019-08-23
    • 2017-09-05
    • 2021-01-20
    相关资源
    最近更新 更多