簡體   English   中英

如何從終端將持久性數據庫導出到 h2 中的內存數據庫

[英]How to export persistent database to in-memory databse in h2 from terminal

編輯:修復了錯誤的命令。 我在磁盤上有一個 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工具沒有連接參數,不能用於新建數據庫; 您的第一個命令無效。 你檢查過它的output嗎?

RunScript工具可以創建一個新的數據庫,但沒有理由用它創建一個嵌入式內存數據庫,這樣的數據庫將只對這個工具可用,並且只有在這個進程運行時才可用。

您需要采取其他步驟。

  1. 使用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

如果這個持久數據庫沒有在任何地方打開。

  1. 啟動正常的H2 Server進程; 它為 H2 控制台提供了透明的身份驗證,允許您使用它創建一個新數據庫:
java -jar h2/bin/h2*.jar

它應該使用 H2 控制台打開 web 瀏覽器 window。

In this window specify jdbc:h2:mem:1;INIT=RUNSCRIPT FROM 'db-dump.sql' as JDBC URL.

您可以通過雙擊系統托盤中的 H2 控制台圖標重新打開此類 window,您可以使用其上下文菜單中的其他命令。

請注意,如果您直接在瀏覽器中鍵入localhost:8082 ,您將無法在其中創建新數據庫; 您確實需要從 H2 打開它(或者您可以使用臨時安全密鑰從其狀態 window 中的托盤圖標的上下文菜單中復制 URL)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM