Java 红移-选择查询表名称在双引号中无效
我正在编写单元测试,在这里我使用内存中的H2DB来测试逻辑。实际代码在redshift上运行,因为redshift使用psql JDBC驱动程序,我选择H2作为解决方案 但我的红移表名中包含点(“.”)运算符。 例如:Java 红移-选择查询表名称在双引号中无效,java,unit-testing,apache-spark-sql,integration-testing,amazon-redshift,Java,Unit Testing,Apache Spark Sql,Integration Testing,Amazon Redshift,我正在编写单元测试,在这里我使用内存中的H2DB来测试逻辑。实际代码在redshift上运行,因为redshift使用psql JDBC驱动程序,我选择H2作为解决方案 但我的红移表名中包含点(“.”)运算符。 例如: select * from emp.vikas; 在单元测试中,查询失败,表示“未找到架构‘emp’”。 为了解决这个问题,我在查询中的表名中添加了双引号 但现在运行实际代码时,红移查询失败。(非单元测试) 说“关系”emp.vikas“不存在” 我的问题是,我们如何才能有一个
select * from emp.vikas;
在单元测试中,查询失败,表示“未找到架构‘emp’”。
为了解决这个问题,我在查询中的表名中添加了双引号
但现在运行实际代码时,红移查询失败。(非单元测试)
说“关系”emp.vikas“不存在”
我的问题是,我们如何才能有一个红移查询的运行测试用例?在红移中,您使用“
引用关系名称(表/视图等)-如果您的关系包含特殊字符(如
)或与关键字冲突(组
,表
)
此外,在Redshift中,您可以使用schema.relationship\u name
符号或database.schema.relationship\u name
引用关系。如果您的关系位于public
架构中,或者您必须正确设置,以便Redshift知道您引用的内容,您也可以仅使用relationship\u name
例如,如果您的红移数据库是my_db
,模式是my_schema
,而tablemy_table
则可以这样引用它:
或my_db.my_schema.my_table
或my_schema.my_table
或“我的数据库”、“我的模式”、“我的表格”
“我的模式”,“我的表格”
或my\u db.my\u 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”
“
引用关系名称(表/视图等)-如果您的关系包含特殊字符(如
)或与关键字冲突(组
,表
)
此外,在红移中,您可以使用schema.relationship\u name
符号或database.schema.relationship\u name
引用关系。如果您的关系位于public
schema中,或者您必须正确设置,以便Redshift知道您所指的内容,则您也可以仅使用relationship\u name
例如,如果您的红移数据库是my_db
,模式是my_schema
,而tablemy_table
则可以这样引用它:
或my_db.my_schema.my_table
或my_schema.my_table
或“我的数据库”、“我的模式”、“我的表格”
“我的模式”,“我的表格”
或my\u db.my\u 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”