我有一个包含短划线字符的teradata数据库名称 - 。
搜索网络但徒劳无功。有人知道如何逃脱jdbc连接字符串中的特殊字符?该字符串如下所示:
jdbc:teradata://HostName/DATABASE=Database-Name
当我使用此url创建连接时,我收到语法错误。还尝试将数据库参数放在单引号或双引号中,并用{}包围特殊字符。
感谢您的帮助!
答案 0 :(得分:1)
最后在这里找到答案:https://jira.talendforge.org/browse/TDI-18863。正确的方法是将参数名称和值括在单引号中:
jdbc:teradata://HostName/'DATABASE=Database-Name'
更新:不,这不起作用,请参阅下面的评论。
答案 1 :(得分:1)
回答我自己的问题:
我的问题是我没有意识到我的数据库名称最后有一些尾随的空格。
TeraDriver使用单引号来转义空格和逗号。这意味着数据库名称应使用单引号。如果没有单引号,则空格和逗号被视为参数值的结尾。如果数据库名称中有单引号,则它们应显示为两个单引号字符。
'Database-Name '
单引号内的任何内容都将与sql查询一起使用:“database Database-Name”。要逃避' - '我们需要双引号。因此,应该使用正确顺序的单引号和双引号:
"jdbc:teradata://HostName/DATABASE='\"Database-Name\"'"
答案 2 :(得分:0)
您是否尝试过\
字符,该字符应该是Java中的转义字符?
jdbc:teradata://HostName/DATABASE=Database\-Name