将 H2 数据库嵌入 ETL 应用程序?

Posted

技术标签:

【中文标题】将 H2 数据库嵌入 ETL 应用程序?【英文标题】:Embed H2 Database into ETL Application? 【发布时间】:2017-07-03 11:49:42 【问题描述】:

我正在寻找一种通过 java / 命令任务以编程方式启动 H2 数据库服务的方法。

对于 Windows:我可以使用以下命令启动服务

java -jar C:/H2/h2/bin/h2-1.4.195.jar -tcpAllowOthers

来自 Java 应用程序,如下所述:Start H2 database programmatically

注意:我使用了简单的 H2-DBManager 方法。

在这两种情况下,我都看到应用程序继续运行。

我的期望是:我需要一种以编程方式启动 H2 数据库并使其作为后台进程运行并进入下一步的方法。

另外,我正在寻找一种将 postgres 数据库嵌入我的 ETL 应用程序并以编程方式启动它的方法。

【问题讨论】:

每个问题只有一个问题。为 H2 执行此操作与为 Postgres 执行此操作(不可用作“嵌入式”数据库) H2 是高优先级。 所以,您找到了代码和命令。你知道你想要什么。你有什么问题? 我的问题是,一旦我使用命令或通过 java 触发了 h2 数据库的启动,我希望数据库服务在后台启动。假设如果我通过命令提示符触发命令,它仍然是相同的命令,如图像:ibb.co/nifAQF。它应该在后台运行并允许我们在同一窗口中键入其他命令。 【参考方案1】:

如果您在 Windows 上使用命令行,请尝试在命令开头添加 START:

START "" java -jar C:/H2/h2/bin/h2-1.4.195.jar -tcpAllowOthers

在 Linux 上添加 &

java -jar C:/H2/h2/bin/h2-1.4.195.jar -tcpAllowOthers &

【讨论】:

如何以编程方式启动H2数据库,一旦触发启动命令,需要切换到下一步。它不应该挂在那里...... 对不起,我没听懂。什么挂了? Hangs 表示 java 程序仍处于执行状态,如图ibb.co/cOZ3fF 所示。一旦执行,我希望这个 java 程序进入完成状态.. 好的,这是一个不同的要求。所以你想在后台启动它,让它运行并用你的 ETL 作业结束后台 h2 进程。我不确定我提供的解决方案在这种情况下是否会对您有所帮助,因为 START 命令只是确保将在后台执行命令。我认为有一个start_service.cmd 文件,也许使用它然后调用stop_service.cmd【参考方案2】:

您可以在 Talend 中通过 tSystem 组件编写这些命令并通过运行 talend 作业来执行命令。 如果您的 Job server 或 Talend Studio 安装在 Windows 上,那么。

START "" java -jar C:/H2/h2/bin/h2-1.4.195.jar -tcpAllowOthers

如果在 Linux 上安装了 Job Server 或 Talend Studio,则

java -jar C:/H2/h2/bin/h2-1.4.195.jar -tcpAllowOthers &

【讨论】:

以上是关于将 H2 数据库嵌入 ETL 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

H2 嵌入式数据库在部署时丢失表/数据

配置嵌入式 H2 用户以进行分发

如何将 H2 控制台嵌入 WAR [重复]

如何在 Mockito 单元测试期间生成 H2 嵌入式数据库?

java - 如何在java桌面应用程序中使用spring(事务)和hibernate创建嵌入式H2 DB?

Flyway / Spring和H2嵌入式数据库的架构相关问题