java - 如何从终端将持久性数据库导出到 h2 中的内存数据库
问题描述
编辑:修复了错误的命令。我在磁盘上有一个 h2 数据库。如何将其导出到内存中?我尝试了以下方法:-
java -cp h2/bin/h2*.jar org.h2.tools.Server -tcp
java -cp h2/bin/h2*.jar org.h2.tools.RunScript -url jdbc:h2:$(pwd)/restapi -user sa -script export.sql
java -cp h2/bin/h2*.jar org.h2.tools.RunScript -tcp -url jdbc:h2:mem:testdb -user sa -script db-dump.sql &
其中 export.sql 包含:-
SCRIPT TO 'db-dump.sql
但是当我尝试通过 Web 控制台连接到 jdbc:h2:mem:testdb 时,出现以下错误:-
Database "mem:testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (Help)
解决方案
Server
工具没有连接参数,不能用于新建数据库;您的第一个命令无效。你检查过它的输出吗?
RunScript
工具可以创建一个新的数据库,但没有理由用它创建一个嵌入式内存数据库,这样的数据库将只对这个工具可用,并且只有在这个进程运行时才可用。
您需要采取其他步骤。
- 将您的数据库导出到 SQL 脚本中
SCRIPT TO 'db-dump.sql'
(如果您在某处有打开的连接)或使用
java -cp h2/bin/h2*.jar org.h2.tools.Script -url jdbc:h2:~/test -user sa -script db-dump.sql
如果这个持久数据库没有在任何地方打开。
- 启动正常的H2 Server进程;它为 H2 控制台提供了透明的身份验证,允许您使用它创建一个新数据库:
java -jar h2/bin/h2*.jar
它应该使用 H2 控制台打开一个 Web 浏览器窗口。
在此窗口中指定jdbc:h2:mem:1;INIT=RUNSCRIPT FROM 'db-dump.sql'
为 JDBC URL。
您可以通过双击系统托盘中的 H2 控制台图标重新打开此类窗口,并且可以使用其上下文菜单中的其他命令。
请注意,如果您localhost:8082
直接在浏览器中键入,您将无法在其中创建新数据库;您确实需要从 H2 打开它(或者您可以从托盘图标上下文菜单中的状态窗口中复制带有临时安全密钥的 URL)。
推荐阅读
- android - 使用 ProviderTestRule 测试 DocumentProvider
- c - ATMEGA32U4 PWM 问题
- python - 在 scikit-optimize 中使用 KerasRegressor 的示例
- python - 如何使用 DJANGO 上的 POST 请求将默认数据保存在其他字段中?
- android - 在哪里可以找到 android Espresso 库的开源代码
- maximo - Maximo- 通过传递 wonum 和 siteid 而不是 workorderid 使用 RESTApi 更新工作订单
- python - 如何用括号注释matplotlib中的直方图
- android-studio - 将价值从 Android Studio 传递到统一?
- vb.net - 奇怪的 VB.net 位图到图片框缩放
- excel - 使用 VBA 使用下拉菜单填写网站表单