将 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mockito 单元测试期间生成 H2 嵌入式数据库?