如何使用“select into”语句来处理h2

7y4bm7vi  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(278)

我目前正在为一个使用sybase数据库的现有java/spring项目创建回归测试。我被要求为测试旋转一个h2数据库,并对其运行现有的查询来测试结果。
总之,代码调用真实的、现有的api,但将h2数据库作为db源而不是sybase(通过使用 -DdbServer=tcp:[host]:[port]/./testDatabase 调用承载代码的spring应用程序时)。
我面临的问题是API调用的几个现有sql查询使用 select COLUMNS into #tempTable 不幸的是,h2似乎并不支持它。
我的问题是:我怎样才能绕过这个问题?我是否可以在sybase和h2都支持的查询中使用另一个等效命令?有没有办法在h2数据库周围创建一个 Package 器,以便它能够捕获“select into”语句并将其更改为h2支持的语句?
我在网上找过,但什么也没找到。我知道h2支持 create table NewTable as SELECT 但不幸的是sybase没有,我特别需要相同的sql查询来处理这两个问题。
任何帮助都将不胜感激!

zvokhttg

zvokhttg1#

这就是我最后要做的:
我把sql从

select columns 
into #tempTable 
from OtherTable

收件人:

create #tempTable(columns columnsType)

insert into #tempTable(columns)
  select (columns) from OtherTable

h2和sybase都支持这一点,似乎不会影响性能。这有点烦人,因为您必须为新表创建所有列,否则更改就相当简单了。
潜在的问题是h2需要在create语句的末尾加一个分号,而sybase不需要,因此,我通过创建一个自定义的jdbccoperations类来修复这个问题,该类只在使用h2时被调用,并在处理查询之前添加分号(我还必须使用它来处理sybase用来创建临时表的散列符号(#))。

相关问题