【发布时间】:2020-11-14 10:17:50
【问题描述】:
我目前正在为使用 sybase 数据库的现有 java/spring 项目创建回归测试。我被要求为测试构建一个 H2 数据库并在其上运行现有查询以测试结果。
总之,代码调用真实的现有 API,但将 H2 数据库作为 db 源而不是 sybase 传递(通过使用
-DdbServer=tcp:[host]:[port]/./testDatabase
调用托管代码的spring应用程序时)。
我面临的问题是 API 调用的几个现有 sql 查询使用 select COLUMNS into #tempTable,不幸的是 H2 似乎不支持。
我的问题是:我该如何解决这个问题?我可以在 sybase 和 H2 都支持的查询中使用另一个等效命令吗?有没有办法在 H2 数据库周围创建一个包装器,以便它可以捕获“select into”语句并将其更改为 H2 支持的语句?
我在网上查过,但找不到任何东西。我知道 H2 支持 create table NewTable as SELECT 但不幸的是 Sybase 不支持,我特别需要 相同的 SQL 查询 来为两者工作。
我们将不胜感激!
【问题讨论】:
-
Sybase ASE (help.sap.com/viewer/e0d4539d39c34f52ae9ef822c2060077/16.0.3.8/…) 和 H2 (h2database.com/html/commands.html#merge_using) 都支持标准的
MERGE命令。您可以使用它将数据从一个表复制到另一个。