gpt4 book ai didi

java - Redshift - 选择查询表名称在双引号中不起作用

转载 作者:行者123 更新时间:2023-12-02 01:45:29 25 4
gpt4 key购买 nike

我正在编写单元测试,其中使用内存中的 H2 DB 来测试逻辑。实际代码在 redshift 上运行,因为 redshift 使用 psql JDBC 驱动程序,我选择 H2 作为解决方法。

但是我的 redshift 表名称中包含点(“.”)运算符。示例:

select * from emp.vikas;

在单元测试中,查询失败并提示“未找到架构‘emp’”。作为解决方法,我在查询中的表名称中添加了双引号。

但是现在运行实际代码时 Redshift 查询失败。 (不是单元测试)说“关系“emp.vikas”不存在”

我的问题是,我们如何才能为 redshift 查询运行测试用例?

最佳答案

在 Redshift 中,您使用 " 来引用关系名称(表/ View 等) - 如果您的关系包含特殊字符(如 .)或与关键字冲突,这非常有用()。

此外,在 Redshift 中,您可以使用 schema.relation_name 表示法或 database.schema.relation_name 引用关系。如果您的关系驻留在 public 架构中或者当您必须设置 search path 时,您也可以仅使用 relation_name正确地以便 Redshift 知道您所指的内容。

例如,如果您的 Redshift 数据库是 my_db,架构是 my_schema,并且表 my_table 您可以这样引用它:

  • my_db.my_schema.my_table
  • my_schema.my_table
  • “my_db”.“my_schema”.“my_table”
  • “my_schema”.“my_table”

如果您的表名称是 my.table,则您必须引用它:

  • my_db.my_schema."my.table"
  • my_schema."my.table"
  • “my_db”.“my_schema”.“my.table”
  • “my_schema”.“my.table”

如果您使用public架构并且您的表名称是emp.vikas,那么您可以引用它:

  • my_db.public."emp.vikas"
  • public."emp.vikas"
  • “emp.vikas”

如果您的架构名称是 emp 并且您的表名称是 vikas 并且您使用 my_db 数据库,那么您可以将您的表引用为:

  • my_db.emp.vikas
  • emp.vikas
  • “my_db”.“emp”.“vikas”
  • “emp”.“vikas”

希望有帮助

关于java - Redshift - 选择查询表名称在双引号中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com