2011-07-18 22 views
8

Có HSQLDB một số cơ chế để lưu dữ liệu trong bộ nhớ vào tập tin?Có một số cơ chế để lưu dữ liệu trong bộ nhớ vào HSQLDB không?

Như tôi biết sau khi máy chủ được chuyển xuống, tất cả dữ liệu trong bộ nhớ sẽ không thể truy cập được. Vì vậy, tôi muốn lưu tất cả dữ liệu trong bộ nhớ vào tệp. Rất tiếc, tôi không thể sử dụng cơ chế BACKUP vì không thể áp dụng cơ chế này cho dữ liệu trong bộ nhớ.

Trả lời

8

Cơ sở dữ liệu HSQLDB có nhiều loại khác nhau. Cơ sở dữ liệu tất cả trong bộ nhớ không lưu trữ dữ liệu vào đĩa. Các cơ sở dữ liệu này có URL ở dạng jdbc:hsqldb:mem:<name>.

Nếu URL cơ sở dữ liệu của bạn ở dạng jdbc:hsqldb:file:<file path> và bảng của bạn là các bảng MEMORY mặc định, dữ liệu là tất cả trong bộ nhớ nhưng các thay đổi được ghi vào một tập hợp các tệp đĩa.

Với tất cả các loại cơ sở dữ liệu, bao gồm all_in_memory, bạn có thể sử dụng câu lệnh SQL SCRIPT <file path> để lưu toàn bộ cơ sở dữ liệu vào tệp. Nếu bạn lưu dữ liệu vào tệp có đuôi mở rộng là .script, bạn có thể mở tệp dưới dạng cơ sở dữ liệu tệp.

Khi bạn chạy một máy chủ, URL của được sử dụng mà không có tiền tố jdbc:hsqldb, ví dụ server.database.0=file:C:/myfile

Xem hướng dẫn ở đây http://hsqldb.org/doc/2.0/guide/running-chapt.html#running_db-sect

+0

HSQLDB có ghi bất kỳ tệp tạm nào vào đĩa và sau đó xóa chúng, khi tôi đang sử dụng URL db là jdbc: hsqldb: mem: và tôi chèn hàng vào bảng? Tôi đang triển khai ứng dụng Java Mule ESB của mình lên cloudhub. Nó hoạt động tốt trên địa phương nhưng không hoạt động trên đám mây. Có vẻ như cloudhub không cho phép ghi tệp. Ứng dụng hoạt động tốt khi tôi nhận xét ra chèn db và trả về phản hồi giả. – RuntimeException

+1

Bản ghi nhớ: cơ sở dữ liệu (URL jdbc: hsqldb: mem: ) không ghi bất kỳ thứ gì vào hệ thống tệp. – fredt

+0

@fredt nếu chúng tôi loại trừ các tệp tạm thời – Antoniossss

6

Có một lệnh SQL cho điều đó. Hãy thử điều này:

SCRIPT '/tmp/data.sql' 

Xem here để biết chi tiết.

Các vấn đề liên quan